summaryrefslogtreecommitdiffstats
path: root/camera2
diff options
context:
space:
mode:
authorAlan Newberger <alann@google.com>2014-11-04 10:18:41 -0800
committerAlan Newberger <alann@google.com>2014-11-04 10:29:04 -0800
commit25b78c8a18327bd73c3d4d34887dd63953aeaa8c (patch)
tree96784b2eb856f257e71893ac2f3eeb58a7e2a85b /camera2
parentc15ddae4862bb9a10b0142fac9558a5f899b1a21 (diff)
downloadandroid_frameworks_ex-25b78c8a18327bd73c3d4d34887dd63953aeaa8c.tar.gz
android_frameworks_ex-25b78c8a18327bd73c3d4d34887dd63953aeaa8c.tar.bz2
android_frameworks_ex-25b78c8a18327bd73c3d4d34887dd63953aeaa8c.zip
Ensure default handler always is set if no other error handler registered
To avoid memory leaks we set the error handler to null in activity onDestroy. But, the agent may receive callbacks after this, so ensure at minimum that we set the default logging handler to default handle errors post activity destroy. Bug: 18200874 Bug: 18202261 Change-Id: Ie7251a149ab02c474d8affd15af6b9ea48c2cdc0
Diffstat (limited to 'camera2')
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
index cdd6993..201a905 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
@@ -55,24 +55,28 @@ class AndroidCameraAgentImpl extends CameraAgent {
private final HandlerThread mCameraHandlerThread;
private final CameraStateHolder mCameraState;
private final DispatchThread mDispatchThread;
- private CameraExceptionHandler mExceptionHandler = new CameraExceptionHandler(null) {
+
+ private static final CameraExceptionHandler sDefaultExceptionHandler =
+ new CameraExceptionHandler(null) {
@Override
public void onCameraError(int errorCode) {
- Log.w(TAG, "onCameraError called before handler set: " + errorCode);
+ Log.w(TAG, "onCameraError called with no handler set: " + errorCode);
}
@Override
public void onCameraException(RuntimeException ex, String commandHistory, int action,
int state) {
- Log.w(TAG, "onCameraException called before handler set", ex);
+ Log.w(TAG, "onCameraException called with no handler set", ex);
}
@Override
public void onDispatchThreadException(RuntimeException ex) {
- Log.w(TAG, "onDispatchThreadException called before handler set", ex);
+ Log.w(TAG, "onDispatchThreadException called with no handler set", ex);
}
};
+ private CameraExceptionHandler mExceptionHandler = sDefaultExceptionHandler;
+
AndroidCameraAgentImpl() {
mCameraHandlerThread = new HandlerThread("Camera Handler Thread");
mCameraHandlerThread.start();
@@ -117,7 +121,8 @@ class AndroidCameraAgentImpl extends CameraAgent {
@Override
public void setCameraExceptionHandler(CameraExceptionHandler exceptionHandler) {
- mExceptionHandler = exceptionHandler;
+ // In case of null set the default handler to route exceptions to logs
+ mExceptionHandler = exceptionHandler != null ? exceptionHandler : sDefaultExceptionHandler;
}
private static class AndroidCameraDeviceInfo implements CameraDeviceInfo {