summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/AndroidCameraManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/AndroidCameraManagerImpl.java')
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java15
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;
}