summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-10-10 15:28:53 -0700
committerEino-Ville Talvala <etalvala@google.com>2012-10-10 15:28:53 -0700
commitcfee40e0d30aa2d93df2c4633e7573165f0d7337 (patch)
treefa1e029d2d204f7d2950cae700a7365f288c47b2
parent1bf2809d3fd3890a782869a041b70b8e595ecdb6 (diff)
downloadframeworks_av-cfee40e0d30aa2d93df2c4633e7573165f0d7337.zip
frameworks_av-cfee40e0d30aa2d93df2c4633e7573165f0d7337.tar.gz
frameworks_av-cfee40e0d30aa2d93df2c4633e7573165f0d7337.tar.bz2
Camera2: Don't let unlocks happen during recording.
Bug: 7309020 Change-Id: I6e66809b868d2e8f47f71e6f8752b44ec06dfb17
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index cd9da42..0ab4e8c 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -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();