|
|
@ -45,13 +45,7 @@
|
|
|
|
using namespace android;
|
|
|
|
using namespace android;
|
|
|
|
|
|
|
|
|
|
|
|
ACameraDevice::~ACameraDevice() {
|
|
|
|
ACameraDevice::~ACameraDevice() {
|
|
|
|
Mutex::Autolock _l(mDevice->mDeviceLock);
|
|
|
|
mDevice->stopLooper();
|
|
|
|
if (mDevice->mCbLooper != nullptr) {
|
|
|
|
|
|
|
|
mDevice->mCbLooper->unregisterHandler(mDevice->mHandler->id());
|
|
|
|
|
|
|
|
mDevice->mCbLooper->stop();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mDevice->mCbLooper.clear();
|
|
|
|
|
|
|
|
mDevice->mHandler.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
namespace android {
|
|
|
|
namespace android {
|
|
|
@ -140,13 +134,9 @@ CameraDevice::~CameraDevice() {
|
|
|
|
disconnectLocked(session);
|
|
|
|
disconnectLocked(session);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mCurrentSession = nullptr;
|
|
|
|
mCurrentSession = nullptr;
|
|
|
|
if (mCbLooper != nullptr) {
|
|
|
|
LOG_ALWAYS_FATAL_IF(mCbLooper != nullptr,
|
|
|
|
mCbLooper->unregisterHandler(mHandler->id());
|
|
|
|
"CameraDevice looper should've been stopped before ~CameraDevice");
|
|
|
|
mCbLooper->stop();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mCbLooper.clear();
|
|
|
|
|
|
|
|
mHandler.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
@ -1410,6 +1400,16 @@ CameraDevice::checkAndFireSequenceCompleteLocked() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CameraDevice::stopLooper() {
|
|
|
|
|
|
|
|
Mutex::Autolock _l(mDeviceLock);
|
|
|
|
|
|
|
|
if (mCbLooper != nullptr) {
|
|
|
|
|
|
|
|
mCbLooper->unregisterHandler(mHandler->id());
|
|
|
|
|
|
|
|
mCbLooper->stop();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mCbLooper.clear();
|
|
|
|
|
|
|
|
mHandler.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Camera service callback implementation
|
|
|
|
* Camera service callback implementation
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|