diff options
author | Steve Kondik <shade@chemlab.org> | 2013-12-10 23:39:36 -0800 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-12-10 23:39:36 -0800 |
commit | 8ecb0c9375a739b69d5d163a3a15d55fa563009f (patch) | |
tree | c20743e04dfae94a0e13fa3b9fe4e218c88f823a | |
parent | fcf9068d1e754e65026f41c0b8840dc877fd9c67 (diff) | |
download | android_packages_apps_Gallery2-8ecb0c9375a739b69d5d163a3a15d55fa563009f.tar.gz android_packages_apps_Gallery2-8ecb0c9375a739b69d5d163a3a15d55fa563009f.tar.bz2 android_packages_apps_Gallery2-8ecb0c9375a739b69d5d163a3a15d55fa563009f.zip |
camera: Synchronize parameter use
Change-Id: Iaf783c0232b480a8db78f7c6c18d2c0e6c40a8e0
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 76ee53f0c..cca9286e8 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1170,16 +1170,18 @@ public class PhotoModule } private void updateSceneMode() { - updateSceneDetection(); - // If scene mode or slow shutter is set, we cannot set flash mode, white balance, and - // focus mode, instead, we read it from driver - if (!Parameters.SCENE_MODE_AUTO.equals(mSceneMode) || - CameraSettings.isSlowShutterEnabled(mParameters)) { - overrideCameraSettings(mParameters.getFlashMode(), - mParameters.getWhiteBalance(), mParameters.getFocusMode(), - mParameters.getColorEffect()); - } else { - overrideCameraSettings(null, null, null, null); + synchronized (mCameraDevice) { + updateSceneDetection(); + // If scene mode or slow shutter is set, we cannot set flash mode, white balance, and + // focus mode, instead, we read it from driver + if (!Parameters.SCENE_MODE_AUTO.equals(mSceneMode) || + CameraSettings.isSlowShutterEnabled(mParameters)) { + overrideCameraSettings(mParameters.getFlashMode(), + mParameters.getWhiteBalance(), mParameters.getFocusMode(), + mParameters.getColorEffect()); + } else { + overrideCameraSettings(null, null, null, null); + } } } @@ -2132,23 +2134,25 @@ 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) { - if ((updateSet & UPDATE_PARAM_INITIALIZE) != 0) { - updateCameraParametersInitialize(); + synchronized (mCameraDevice) { + if ((updateSet & UPDATE_PARAM_INITIALIZE) != 0) { + updateCameraParametersInitialize(); - // Set camera mode - CameraSettings.setVideoMode(mParameters, false); - } + // Set camera mode + CameraSettings.setVideoMode(mParameters, false); + } - if ((updateSet & UPDATE_PARAM_ZOOM) != 0) { - updateCameraParametersZoom(); - } + if ((updateSet & UPDATE_PARAM_ZOOM) != 0) { + updateCameraParametersZoom(); + } - if ((updateSet & UPDATE_PARAM_PREFERENCE) != 0) { - updateCameraParametersPreference(); - } + if ((updateSet & UPDATE_PARAM_PREFERENCE) != 0) { + updateCameraParametersPreference(); + } - Util.dumpParameters(mParameters); - mCameraDevice.setParameters(mParameters); + Util.dumpParameters(mParameters); + mCameraDevice.setParameters(mParameters); + } } // If the Camera is idle, update the parameters immediately, otherwise |