summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAngus Kong <shkong@google.com>2013-04-01 15:59:09 -0700
committerAngus Kong <shkong@google.com>2013-04-01 16:04:08 -0700
commitfd363b27e87ad4b9dc23bcd415d3d9fb5619cdfb (patch)
treeb4fbea5c553848b1805f654094cb2aefb9e9f978 /src
parent87efd29660cfc53023667ff8c124364fcdbcc88c (diff)
downloadandroid_packages_apps_Snap-fd363b27e87ad4b9dc23bcd415d3d9fb5619cdfb.tar.gz
android_packages_apps_Snap-fd363b27e87ad4b9dc23bcd415d3d9fb5619cdfb.tar.bz2
android_packages_apps_Snap-fd363b27e87ad4b9dc23bcd415d3d9fb5619cdfb.zip
Handle InterruptedException in waitDone
Dirty bit for mParameters should be set properly if getParameters is not finished. bug:8517092 Change-Id: I2259dc978465d23bff9c6852bec4a791f94137d0
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraManager.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraManager.java b/src/com/android/camera/CameraManager.java
index b1161cdc4..be82ea613 100644
--- a/src/com/android/camera/CameraManager.java
+++ b/src/com/android/camera/CameraManager.java
@@ -420,12 +420,20 @@ public class CameraManager {
}
public void setParameters(Parameters params) {
- // TODO: check if this synchronous version is necessary
+ if (params == null) {
+ Log.v(TAG, "null parameters in setParameters()");
+ return;
+ }
mParametersIsDirty = true;
mCameraHandler.obtainMessage(SET_PARAMETERS, params).sendToTarget();
}
public void setParametersAsync(Parameters params) {
+ // TODO: remove this.
+ if (params == null) {
+ Log.v(TAG, "null parameters in setParameters()");
+ return;
+ }
mParametersIsDirty = true;
mCameraHandler.removeMessages(SET_PARAMETERS_ASYNC);
mCameraHandler.obtainMessage(SET_PARAMETERS_ASYNC, params).sendToTarget();
@@ -434,8 +442,7 @@ public class CameraManager {
public Parameters getParameters() {
if (mParametersIsDirty || mParameters == null) {
mCameraHandler.sendEmptyMessage(GET_PARAMETERS);
- waitDone();
- mParametersIsDirty = false;
+ if (waitDone()) mParametersIsDirty = false;
}
return mParameters;
}
@@ -445,7 +452,8 @@ public class CameraManager {
ENABLE_SHUTTER_SOUND, (enable ? 1 : 0), 0).sendToTarget();
}
- public void waitDone() {
+ // return false if cancelled.
+ public boolean waitDone() {
final Object waitDoneLock = new Object();
final Runnable unlockRunnable = new Runnable() {
@Override
@@ -462,8 +470,10 @@ public class CameraManager {
waitDoneLock.wait();
} catch (InterruptedException ex) {
Log.v(TAG, "waitDone interrupted");
+ return false;
}
}
+ return true;
}
}
}