OSDN Git Service

Camera2: Don't let unlocks happen during recording.
authorEino-Ville Talvala <etalvala@google.com>
Wed, 10 Oct 2012 22:28:53 +0000 (15:28 -0700)
committerEino-Ville Talvala <etalvala@google.com>
Wed, 10 Oct 2012 22:28:53 +0000 (15:28 -0700)
Bug: 7309020
Change-Id: I6e66809b868d2e8f47f71e6f8752b44ec06dfb17

services/camera/libcameraservice/Camera2Client.cpp

index cd9da42..0ab4e8c 100644 (file)
@@ -454,9 +454,13 @@ status_t Camera2Client::unlock() {
     ALOGV("%s: Camera %d: Unlock call from pid %d; current client pid %d",
             __FUNCTION__, mCameraId, getCallingPid(), mClientPid);
 
-    // TODO: Check for uninterruptable conditions
-
     if (mClientPid == getCallingPid()) {
+        SharedParameters::Lock l(mParameters);
+        if (l.mParameters.state == Parameters::RECORD ||
+                l.mParameters.state == Parameters::VIDEO_SNAPSHOT) {
+            ALOGD("Not allowed to unlock camera during recording.");
+            return INVALID_OPERATION;
+        }
         mClientPid = 0;
         mCameraClient.clear();
         mSharedCameraClient.clear();