summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanthosh Kumar Thimmanna Bhattar <sthim@codeaurora.org>2014-01-10 14:50:30 +0530
committerSanthosh Kumar Thimmanna Bhattar <sthim@codeaurora.org>2014-01-13 18:20:03 +0530
commitedc737a2dd8e844b56508ed387c22eb9a7048d72 (patch)
tree50c1ebc09f75d0921ab128551297854fdcf37367
parentabb8aa280b72c90b966f8f06480b2dfb76f9cd8b (diff)
downloadandroid_packages_apps_Snap-edc737a2dd8e844b56508ed387c22eb9a7048d72.tar.gz
android_packages_apps_Snap-edc737a2dd8e844b56508ed387c22eb9a7048d72.tar.bz2
android_packages_apps_Snap-edc737a2dd8e844b56508ed387c22eb9a7048d72.zip
Camera2: Synchronize access to camera parameters
- Concurrent access between the main handler thread and the camera start-up thread w.r.t. 'mParameters' is possible. This change will synchronize the two threads in order to avoid any exceptions. ( cherrypicked from commit e988411c441410f270fe0b98dfd0d9b1f033503f ) Change-Id: I290452723b3687eba5240f451cc94aef175a9fc4 CRs-Fixed: 539634
-rw-r--r--src/com/android/camera/PhotoModule.java58
1 files changed, 33 insertions, 25 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index c85447e05..f12f13008 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -443,9 +443,11 @@ public class PhotoModule
case CONFIGURE_SKIN_TONE_FACTOR: {
if ((mCameraDevice != null) && isCameraIdle()) {
- mParameters = mCameraDevice.getParameters();
- mParameters.set("skinToneEnhancement", String.valueOf(msg.arg1));
- mCameraDevice.setParameters(mParameters);
+ synchronized (mCameraDevice) {
+ mParameters = mCameraDevice.getParameters();
+ mParameters.set("skinToneEnhancement", String.valueOf(msg.arg1));
+ mCameraDevice.setParameters(mParameters);
+ }
}
break;
}
@@ -1937,10 +1939,12 @@ public class PhotoModule
(mFocusManager.getCurrentFocusState() != mFocusManager.STATE_FOCUSING_SNAP_ON_FINISH) ) {
if (mbrightness > MINIMUM_BRIGHTNESS) {
mbrightness-=mbrightness_step;
- /* Set the "luma-adaptation" parameter */
- mParameters = mCameraDevice.getParameters();
- mParameters.set("luma-adaptation", String.valueOf(mbrightness));
- mCameraDevice.setParameters(mParameters);
+ synchronized (mCameraDevice) {
+ /* Set the "luma-adaptation" parameter */
+ mParameters = mCameraDevice.getParameters();
+ mParameters.set("luma-adaptation", String.valueOf(mbrightness));
+ mCameraDevice.setParameters(mParameters);
+ }
}
brightnessProgressBar.setProgress(mbrightness);
brightnessProgressBar.setVisibility(View.VISIBLE);
@@ -1952,10 +1956,12 @@ public class PhotoModule
(mFocusManager.getCurrentFocusState() != mFocusManager.STATE_FOCUSING_SNAP_ON_FINISH) ) {
if (mbrightness < MAXIMUM_BRIGHTNESS) {
mbrightness+=mbrightness_step;
- /* Set the "luma-adaptation" parameter */
- mParameters = mCameraDevice.getParameters();
- mParameters.set("luma-adaptation", String.valueOf(mbrightness));
- mCameraDevice.setParameters(mParameters);
+ synchronized (mCameraDevice) {
+ /* Set the "luma-adaptation" parameter */
+ mParameters = mCameraDevice.getParameters();
+ mParameters.set("luma-adaptation", String.valueOf(mbrightness));
+ mCameraDevice.setParameters(mParameters);
+ }
}
brightnessProgressBar.setProgress(mbrightness);
brightnessProgressBar.setVisibility(View.VISIBLE);
@@ -2705,25 +2711,27 @@ public class PhotoModule
// the subsets actually need updating. The PREFERENCE set needs extra
// locking because the preference can be changed from GLThread as well.
private void setCameraParameters(int updateSet) {
- boolean doModeSwitch = false;
+ synchronized (mCameraDevice) {
+ boolean doModeSwitch = false;
- if ((updateSet & UPDATE_PARAM_INITIALIZE) != 0) {
- updateCameraParametersInitialize();
- }
+ if ((updateSet & UPDATE_PARAM_INITIALIZE) != 0) {
+ updateCameraParametersInitialize();
+ }
- if ((updateSet & UPDATE_PARAM_ZOOM) != 0) {
- updateCameraParametersZoom();
- }
+ if ((updateSet & UPDATE_PARAM_ZOOM) != 0) {
+ updateCameraParametersZoom();
+ }
- if ((updateSet & UPDATE_PARAM_PREFERENCE) != 0) {
- doModeSwitch = updateCameraParametersPreference();
- }
+ if ((updateSet & UPDATE_PARAM_PREFERENCE) != 0) {
+ doModeSwitch = updateCameraParametersPreference();
+ }
- mCameraDevice.setParameters(mParameters);
+ mCameraDevice.setParameters(mParameters);
- // Switch to gcam module if HDR+ was selected
- if (doModeSwitch && !mIsImageCaptureIntent) {
- mHandler.sendEmptyMessage(SWITCH_TO_GCAM_MODULE);
+ // Switch to gcam module if HDR+ was selected
+ if (doModeSwitch && !mIsImageCaptureIntent) {
+ mHandler.sendEmptyMessage(SWITCH_TO_GCAM_MODULE);
+ }
}
}