CameraNDK: prevent double closing session
Bug: 27102995
Change-Id: Ie3e9870d1fc1025cab7a1019ed7d056fe07536ad
diff --git a/camera/ndk/impl/ACameraCaptureSession.cpp b/camera/ndk/impl/ACameraCaptureSession.cpp
index 7f1b75d..b741e46 100644
--- a/camera/ndk/impl/ACameraCaptureSession.cpp
+++ b/camera/ndk/impl/ACameraCaptureSession.cpp
@@ -39,6 +39,15 @@
void
ACameraCaptureSession::closeByApp() {
+ {
+ Mutex::Autolock _l(mSessionLock);
+ if (mClosedByApp) {
+ // Do not close twice
+ return;
+ }
+ mClosedByApp = true;
+ }
+
sp<CameraDevice> dev = getDeviceSp();
if (dev != nullptr) {
dev->lockDeviceForSessionOps();
diff --git a/camera/ndk/impl/ACameraCaptureSession.h b/camera/ndk/impl/ACameraCaptureSession.h
index 1db1b21..f20b324 100644
--- a/camera/ndk/impl/ACameraCaptureSession.h
+++ b/camera/ndk/impl/ACameraCaptureSession.h
@@ -103,6 +103,7 @@
const ACameraCaptureSession_stateCallbacks mUserSessionCallback;
const wp<CameraDevice> mDevice;
bool mIsClosed = false;
+ bool mClosedByApp = false;
bool mIdle = true;
Mutex mSessionLock;
};