summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2013-12-10 23:39:36 -0800
committerSteve Kondik <shade@chemlab.org>2013-12-10 23:39:36 -0800
commit8ecb0c9375a739b69d5d163a3a15d55fa563009f (patch)
treec20743e04dfae94a0e13fa3b9fe4e218c88f823a
parentfcf9068d1e754e65026f41c0b8840dc877fd9c67 (diff)
downloadandroid_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.java50
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