diff options
Diffstat (limited to 'src/com/android/camera/AndroidCameraManagerImpl.java')
-rw-r--r-- | src/com/android/camera/AndroidCameraManagerImpl.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java index b72fbd0da..5b70897e3 100644 --- a/src/com/android/camera/AndroidCameraManagerImpl.java +++ b/src/com/android/camera/AndroidCameraManagerImpl.java @@ -348,8 +348,14 @@ class AndroidCameraManagerImpl implements CameraManager { } mCamera = null; } else if (mCamera == null) { - Log.w(TAG, "Cannot handle message, mCamera is null."); - return; + if (msg.what == OPEN_CAMERA) { + if (msg.obj != null) { + ((CameraOpenErrorCallback) msg.obj).onDeviceOpenFailure(msg.arg1); + } + } else { + Log.w(TAG, "Cannot handle message, mCamera is null."); + } + return; } throw e; } @@ -848,7 +854,10 @@ class AndroidCameraManagerImpl implements CameraManager { private CameraOpenErrorCallbackForward( Handler h, CameraOpenErrorCallback cb) { - mHandler = h; + // Given that we are using the main thread handler, we can create it + // here instead of holding onto the PhotoModule objects. In this + // way, we can avoid memory leak. + mHandler = new Handler(Looper.getMainLooper()); mCallback = cb; } |