From 8ecb0c9375a739b69d5d163a3a15d55fa563009f Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Tue, 10 Dec 2013 23:39:36 -0800 Subject: camera: Synchronize parameter use Change-Id: Iaf783c0232b480a8db78f7c6c18d2c0e6c40a8e0 --- src/com/android/camera/PhotoModule.java | 50 ++++++++++++++++++--------------- 1 file 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 -- cgit v1.2.3