summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2013-11-08 02:31:54 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-11-08 02:31:54 +0000
commit36d84c1d273faf24c6907e173cf95f233db71592 (patch)
treecac352bdaec0e74a06287a9ef31ea45e7a026fe1
parent2b78c0c048fe906beaeadeee3e267524c808c340 (diff)
parentacf9ab7c3ddc976bc9d6239ae54523b9805c876d (diff)
downloadandroid_packages_apps_Snap-36d84c1d273faf24c6907e173cf95f233db71592.tar.gz
android_packages_apps_Snap-36d84c1d273faf24c6907e173cf95f233db71592.tar.bz2
android_packages_apps_Snap-36d84c1d273faf24c6907e173cf95f233db71592.zip
Merge "Ensure mOpenCameraThread has been setup before dereferencing." into gb-ub-photos-carlsbad
-rw-r--r--src/com/android/camera/PhotoModule.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 347244ebe..4e2b60413 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -245,9 +245,9 @@ public class PhotoModule
private final Handler mHandler = new MainHandler();
/** A thread separate from the UI thread for camera startup. */
- private HandlerThread mOpenCameraThread;
+ private volatile HandlerThread mOpenCameraThread;
/** A handler to run on the camera startup thread. */
- private Handler mOpenCameraHandler;
+ private volatile Handler mOpenCameraHandler;
/** This lock should always protect openCamera and closeCamera. */
private final Object mCameraOpenLock = new Object();
@@ -505,7 +505,10 @@ public class PhotoModule
@Override
public void onPreviewUIReady() {
// Requires that OPEN_CAMERA_ASYNC has been already sent.
- mOpenCameraHandler.sendEmptyMessage(START_PREVIEW_ASYNC);
+ Handler openCameraHandler = mOpenCameraHandler;
+ if (openCameraHandler != null) {
+ openCameraHandler.sendEmptyMessage(START_PREVIEW_ASYNC);
+ }
}
@Override
@@ -1355,14 +1358,19 @@ public class PhotoModule
// Postpones actually releasing for KEEP_CAMERA_TIMEOUT,
// so if onResume is directly called after this, the camera
// simply needs to reconnect (takes about 2-5ms).
- mOpenCameraHandler.removeMessages(OPEN_CAMERA_ASYNC);
- mOpenCameraHandler.removeMessages(START_PREVIEW_ASYNC);
+ if (mOpenCameraHandler != null) {
+ mOpenCameraHandler.removeMessages(OPEN_CAMERA_ASYNC);
+ mOpenCameraHandler.removeMessages(START_PREVIEW_ASYNC);
+ mOpenCameraHandler = null;
+ }
synchronized (mCameraOpenLock) {
closeCamera();
}
// Stop the long running open camera thread.
- mOpenCameraThread.quitSafely();
- mOpenCameraThread = null;
+ if (mOpenCameraThread != null) {
+ mOpenCameraThread.quitSafely();
+ mOpenCameraThread = null;
+ }
Log.e(TAG, "Done quiting safely.");
resetScreenOn();