diff options
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 1a0d33d9d..afc4a1492 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -1362,9 +1362,21 @@ public class CaptureModule extends CameraModule implements @Override public void onFailure() { Log.e(TAG, "Could not open camera."); + // Sometimes the failure happens due to the controller + // being in paused state but mCamera is already + // initialized. In these cases we just need to close the + // camera device without showing the error dialog. + // Application will properly reopen the camera on the next + // resume operation (b/21025113). + boolean isControllerPaused = mAppController.isPaused(); + if (mCamera != null) { + mCamera.close(); + } mCamera = null; mCameraOpenCloseLock.release(); - mAppController.getFatalErrorHandler().onCameraOpenFailure(); + if (!isControllerPaused) { + mAppController.getFatalErrorHandler().onCameraOpenFailure(); + } } @Override |