Ensure mOpenCameraThread has been setup before dereferencing.

Bug: 11579062
Change-Id: Iabccdbfd3468eaa47115de1dbcafa7f9e456603b
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 347244e..4e2b604 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -245,9 +245,9 @@
     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 @@
     @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 @@
         // 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();