Refine camera fatal error handling in CameraActivity.

Use Log.e() to clearly indicate what action has been taken to handle
the error.

Bug: 17964147
Change-Id: I073e06d99a89e6e1e697766736791ef419339944
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 12edaf5..5ead5c4 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1321,6 +1321,7 @@
         = new CameraExceptionHandler.CameraExceptionCallback() {
                 @Override
                 public void onCameraError(int errorCode) {
+                    // Not a fatal error. only do Log.e().
                     Log.e(TAG, "Camera error callback. error=" + errorCode);
                 }
                 @Override
@@ -1334,14 +1335,19 @@
                     onFatalError();
                 }
                 private void onFatalError() {
+                    if (mCameraFatalError) {
+                        return;
+                    }
                     mCameraFatalError = true;
+
                     // If the activity receives exception during onPause, just exit the app.
                     if (mPaused && !isFinishing()) {
-                        Log.v(TAG, "Fatal error during onPause, call Activity.finish()");
+                        Log.e(TAG, "Fatal error during onPause, call Activity.finish()");
                         finish();
+                    } else {
+                        CameraUtil.showErrorAndFinish(CameraActivity.this,
+                                R.string.cannot_connect_camera);
                     }
-                    CameraUtil.showErrorAndFinish(CameraActivity.this,
-                            R.string.cannot_connect_camera);
                 }
             };
 
@@ -1692,9 +1698,10 @@
         if (mCameraFatalError && !isFinishing()) {
             Log.v(TAG, "onPause when camera is in fatal state, call Activity.finish()");
             finish();
+        } else {
+            // Close the camera and wait for the operation done.
+            mCameraController.closeCamera(true);
         }
-        // Close the camera and wait for the operation done.
-        mCameraController.closeCamera(true);
     }
 
     @Override
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index a55aa84..b415901 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -301,6 +301,7 @@
         // appearing, so check to ensure that the activity is not shutting down
         // before attempting to attach a dialog to the window manager.
         if (!activity.isFinishing()) {
+            Log.e(TAG, "Show fatal error dialog");
             new AlertDialog.Builder(activity)
                     .setCancelable(false)
                     .setTitle(R.string.camera_error_title)