From: Sascha Haeberling Date: Fri, 18 Apr 2014 15:13:55 +0000 (-0700) Subject: Catch potential RTE from Camera. X-Git-Tag: android-x86-6.0-r3~1063^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3fff70c316ff1f3d6ec1cd93e1f34769ebc4f781;p=android-x86%2Fpackages-apps-Camera2.git Catch potential RTE from Camera. I got this one on a Nexus S running CM. So maybe not a real problem in the wild. But given the amount of errors we see in the wild about camera not connection, we should revisit and see if any of these errors are catchable, like this one. Change-Id: I02421bb6a1b5256bf23c2b5fe81f11a78d02cd57 --- diff --git a/src/com/android/camera/app/AndroidCameraManagerImpl.java b/src/com/android/camera/app/AndroidCameraManagerImpl.java index 2385bc155..6cd9c3581 100644 --- a/src/com/android/camera/app/AndroidCameraManagerImpl.java +++ b/src/com/android/camera/app/AndroidCameraManagerImpl.java @@ -286,7 +286,11 @@ class AndroidCameraManagerImpl implements CameraManager { @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void setAutoFocusMoveCallback( android.hardware.Camera camera, Object cb) { - camera.setAutoFocusMoveCallback((AutoFocusMoveCallback) cb); + try { + camera.setAutoFocusMoveCallback((AutoFocusMoveCallback) cb); + } catch (RuntimeException ex) { + Log.w(TAG, ex.getMessage()); + } } private void capture(final CaptureCallbacks cb) { @@ -551,7 +555,7 @@ class AndroidCameraManagerImpl implements CameraManager { private class DispatchThread extends Thread { - private Queue mJobQueue; + private final Queue mJobQueue; private Boolean mIsEnded; public DispatchThread() { @@ -1096,7 +1100,7 @@ class AndroidCameraManagerImpl implements CameraManager { private static class WaitDoneBundle { public Runnable mUnlockRunnable; - private Object mWaitLock; + private final Object mWaitLock; WaitDoneBundle() { mWaitLock = new Object(); @@ -1130,7 +1134,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static AFCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new AFCallbackForward(handler, camera, cb); } @@ -1171,7 +1177,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static ErrorCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraErrorCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new ErrorCallbackForward(handler, camera, cb); } @@ -1211,7 +1219,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static AFMoveCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFMoveCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new AFMoveCallbackForward(handler, camera, cb); } @@ -1253,7 +1263,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static ShutterCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraShutterCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new ShutterCallbackForward(handler, camera, cb); } @@ -1294,7 +1306,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static PictureCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPictureCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new PictureCallbackForward(handler, camera, cb); } @@ -1336,7 +1350,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static PreviewCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPreviewDataCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new PreviewCallbackForward(handler, camera, cb); } @@ -1375,7 +1391,9 @@ class AndroidCameraManagerImpl implements CameraManager { */ public static FaceDetectionCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraFaceDetectionCallback cb) { - if (handler == null || camera == null || cb == null) return null; + if (handler == null || camera == null || cb == null) { + return null; + } return new FaceDetectionCallbackForward(handler, camera, cb); }