OSDN Git Service

Handling the GcamService timeout due to application in paused state (camera-Haleakala)
authorGabriel Nava <gnava@google.com>
Wed, 27 May 2015 17:42:03 +0000 (10:42 -0700)
committerGabriel Nava <gnava@google.com>
Wed, 27 May 2015 18:26:22 +0000 (11:26 -0700)
- 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

src/com/android/camera/CaptureModule.java

index 1a0d33d..afc4a14 100644 (file)
@@ -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