summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2013-11-07 18:12:41 -0800
committerRuben Brunk <rubenbrunk@google.com>2013-11-07 18:12:41 -0800
commitacf9ab7c3ddc976bc9d6239ae54523b9805c876d (patch)
tree8566bb10e7ade627350f44c658c9a8753e6b28cb
parent2f878d54ecbb62ef09aa2b0152dea983e598724f (diff)
downloadandroid_packages_apps_Snap-acf9ab7c3ddc976bc9d6239ae54523b9805c876d.tar.gz
android_packages_apps_Snap-acf9ab7c3ddc976bc9d6239ae54523b9805c876d.tar.bz2
android_packages_apps_Snap-acf9ab7c3ddc976bc9d6239ae54523b9805c876d.zip
Ensure mOpenCameraThread has been setup before dereferencing.
Bug: 11579062 Change-Id: Iabccdbfd3468eaa47115de1dbcafa7f9e456603b
-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();