From b233eaef6a0b9a0b38845de252322c5e7418cdcf Mon Sep 17 00:00:00 2001 From: Jayant Chowdhary Date: Thu, 20 Jun 2019 20:30:07 -0700 Subject: [PATCH] libcamera2ndk_vendor: stop looper thread on ~ACameraDevice() Bug: 135641415 Test: enroll; while(1) auth; Change-Id: I59c522a0e8827c5990926f0cf7c7960e1cea2e5e Signed-off-by: Jayant Chowdhary --- camera/ndk/ndk_vendor/impl/ACameraDevice.cpp | 10 ++++++++++ camera/ndk/ndk_vendor/impl/ACameraDevice.h | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp b/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp index a43d707e8e..8a3bb46711 100644 --- a/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp +++ b/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp @@ -44,6 +44,16 @@ using namespace android; +ACameraDevice::~ACameraDevice() { + Mutex::Autolock _l(mDevice->mDeviceLock); + if (mDevice->mCbLooper != nullptr) { + mDevice->mCbLooper->unregisterHandler(mDevice->mHandler->id()); + mDevice->mCbLooper->stop(); + } + mDevice->mCbLooper.clear(); + mDevice->mHandler.clear(); +} + namespace android { namespace acam { diff --git a/camera/ndk/ndk_vendor/impl/ACameraDevice.h b/camera/ndk/ndk_vendor/impl/ACameraDevice.h index 829b08452e..d8df5684a7 100644 --- a/camera/ndk/ndk_vendor/impl/ACameraDevice.h +++ b/camera/ndk/ndk_vendor/impl/ACameraDevice.h @@ -135,6 +135,7 @@ class CameraDevice final : public RefBase { private: friend ACameraCaptureSession; + friend ACameraDevice; camera_status_t checkCameraClosedOrErrorLocked() const; @@ -383,8 +384,7 @@ struct ACameraDevice { sp chars) : mDevice(new android::acam::CameraDevice(id, cb, std::move(chars), this)) {} - ~ACameraDevice() {}; - + ~ACameraDevice(); /******************* * NDK public APIs * *******************/