summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-04-09 02:36:20 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-04-09 02:36:19 -0700
commitdaf31ffbf9af98c5fe161a2b6f744e239203dc85 (patch)
tree12d1c244d79a44e2a03f5976ef3d4bbf7dfe8d1c /src
parente341b3d335e848babb0f2da684ea94df3fe53130 (diff)
parent918e9627ecd69dab90be053bba59c6593ad235e9 (diff)
downloadandroid_packages_apps_Snap-daf31ffbf9af98c5fe161a2b6f744e239203dc85.tar.gz
android_packages_apps_Snap-daf31ffbf9af98c5fe161a2b6f744e239203dc85.tar.bz2
android_packages_apps_Snap-daf31ffbf9af98c5fe161a2b6f744e239203dc85.zip
Merge "SnapdragonCamera: Fix camera parameters concurrent modification."
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/PhotoModule.java47
1 files changed, 30 insertions, 17 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index bba073f68..6bfffb695 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -1518,20 +1518,23 @@ public class PhotoModule
// Set rotation and gps data.
int orientation = mOrientation;
mJpegRotation = CameraUtil.getJpegRotation(mCameraId, orientation);
- mParameters.setRotation(mJpegRotation);
String pictureFormat = mParameters.get(KEY_PICTURE_FORMAT);
Location loc = getLocationAccordPictureFormat(pictureFormat);
- CameraUtil.setGpsParameters(mParameters, loc);
- if (mRefocus) {
- mParameters.set(CameraSettings.KEY_QC_LEGACY_BURST,
- CameraSettings.KEY_QC_RE_FOCUS_COUNT);
- } else {
- mParameters.remove(CameraSettings.KEY_QC_LEGACY_BURST);
- }
+ synchronized (mCameraDevice) {
+ mParameters.setRotation(mJpegRotation);
+ CameraUtil.setGpsParameters(mParameters, loc);
- mCameraDevice.setParameters(mParameters);
- mParameters = mCameraDevice.getParameters();
+ if (mRefocus) {
+ mParameters.set(CameraSettings.KEY_QC_LEGACY_BURST,
+ CameraSettings.KEY_QC_RE_FOCUS_COUNT);
+ } else {
+ mParameters.remove(CameraSettings.KEY_QC_LEGACY_BURST);
+ }
+
+ mCameraDevice.setParameters(mParameters);
+ mParameters = mCameraDevice.getParameters();
+ }
mBurstSnapNum = mParameters.getInt("num-snaps-per-shutter");
mReceivedSnapNum = 0;
@@ -1870,9 +1873,11 @@ public class PhotoModule
if (oldOrientation != mOrientation) {
Log.v(TAG, "onOrientationChanged, update parameters");
if (mParameters != null && mCameraDevice != null) {
- setFlipValue();
- updatePowerMode();
- mCameraDevice.setParameters(mParameters);
+ synchronized (mCameraDevice) {
+ setFlipValue();
+ updatePowerMode();
+ mCameraDevice.setParameters(mParameters);
+ }
}
mUI.setOrientation(mOrientation, true);
if (mGraphView != null) {
@@ -4255,10 +4260,12 @@ public class PhotoModule
mZoomValue = index;
if (mParameters == null || mCameraDevice == null) return index;
// Set zoom parameters asynchronously
- mParameters.setZoom(mZoomValue);
- mCameraDevice.setParameters(mParameters);
- Parameters p = mCameraDevice.getParameters();
- if (p != null) return p.getZoom();
+ synchronized (mCameraDevice) {
+ mParameters.setZoom(mZoomValue);
+ mCameraDevice.setParameters(mParameters);
+ Parameters p = mCameraDevice.getParameters();
+ if (p != null) return p.getZoom();
+ }
return index;
}
@@ -4363,6 +4370,12 @@ public class PhotoModule
@Override
public void onMakeupLevel(String key, String value) {
+ synchronized (mCameraDevice) {
+ onMakeupLevelSync(key, value);
+ }
+ }
+
+ public void onMakeupLevelSync(String key, String value) {
Log.d(TAG, "PhotoModule.onMakeupLevel(): key is " + key + ", value is " + value);
if(TextUtils.isEmpty(value)) {