Fix photo mode is getting stuck in a single CameraState.

Bug: 11574716
Change-Id: Ieb3622103798077071bb9350773851b7acbff756
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index ce0deed..347244e 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -350,7 +350,6 @@
                     }
 
                     startPreview();
-                    mHandler.sendEmptyMessage(CAMERA_PREVIEW_DONE);
                     break;
                 }
 
@@ -1566,12 +1565,8 @@
         startPreview();
     }
 
+    /** This can run on a background thread, post any view updates to MainHandler. */
     private void startPreview() {
-        if (mCameraState != PREVIEW_STOPPED) {
-            Log.v(TAG, "Already previewing");
-            return;
-        }
-
         if (mPaused || mCameraDevice == null) {
             return;
         }
@@ -1592,6 +1587,12 @@
                 return;
             }
             mCameraDevice.setErrorCallback(mErrorCallback);
+            // ICS camera frameworks has a bug. Face detection state is not cleared 1589
+            // after taking a picture. Stop the preview to work around it. The bug
+            // was fixed in JB.
+            if (mCameraState != PREVIEW_STOPPED) {
+                stopPreview();
+            }
 
             setDisplayOrientation();
 
@@ -1618,6 +1619,7 @@
             if (mSnapshotOnIdle) {
                 mHandler.post(mDoSnapRunnable);
             }
+            mHandler.sendEmptyMessage(CAMERA_PREVIEW_DONE);
         }
     }