diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-11-08 02:31:54 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-11-08 02:31:54 +0000 |
commit | 36d84c1d273faf24c6907e173cf95f233db71592 (patch) | |
tree | cac352bdaec0e74a06287a9ef31ea45e7a026fe1 | |
parent | 2b78c0c048fe906beaeadeee3e267524c808c340 (diff) | |
parent | acf9ab7c3ddc976bc9d6239ae54523b9805c876d (diff) | |
download | android_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.java | 22 |
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(); |