From: Gabriel Nava Date: Wed, 27 May 2015 17:42:03 +0000 (-0700) Subject: Handling the GcamService timeout due to application in paused state (camera-Haleakala) X-Git-Tag: android-x86-6.0-r3~37^2~12 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d927492ade2e253ccc620effd5602582eaa6dd2d;p=android-x86%2Fpackages-apps-Camera2.git Handling the GcamService timeout due to application in paused state (camera-Haleakala) - When GcamService times out due to a pause state, all resources are released. - Releasing the gcam resources without showing the error dialog allows next resume operation to open the camera Bug: 21025113 Change-Id: I95a89fbf6ce2498c1323cd4d06383141cc7cb913 --- 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