summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQiwen Zhao <zhao@google.com>2014-11-12 13:51:20 -0800
committerQiwen Zhao <zhao@google.com>2014-11-12 13:51:20 -0800
commit3238136a95ea85c0283a1b623e501c835ed5b753 (patch)
tree9e65c1699eab5b847b951fa3fd3347e90603e83e
parent7ce2ce7d166d839eb62e03b4cdad7fad4b5e267a (diff)
parent733ca8dfa76ac34d1f9caff8798d01a4a8f44002 (diff)
downloadandroid_frameworks_ex-3238136a95ea85c0283a1b623e501c835ed5b753.tar.gz
android_frameworks_ex-3238136a95ea85c0283a1b623e501c835ed5b753.tar.bz2
android_frameworks_ex-3238136a95ea85c0283a1b623e501c835ed5b753.zip
Merge commit '733ca8dfa76ac34d1f9caff8798d01a4a8f44002' into lmp-mr1-dev
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java11
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java22
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/CameraExceptionHandler.java12
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/HistoryHandler.java4
4 files changed, 34 insertions, 15 deletions
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
index c57716d..2fc4ad3 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
@@ -222,8 +222,9 @@ class AndroidCamera2AgentImpl extends CameraAgent {
public void handleMessage(final Message msg) {
super.handleMessage(msg);
Log.v(TAG, "handleMessage - action = '" + CameraActions.stringify(msg.what) + "'");
+ int cameraAction = msg.what;
try {
- switch(msg.what) {
+ switch (cameraAction) {
case CameraActions.OPEN_CAMERA:
case CameraActions.RECONNECT: {
CameraOpenCallback openCallback = (CameraOpenCallback) msg.obj;
@@ -640,12 +641,12 @@ class AndroidCamera2AgentImpl extends CameraAgent {
}
}
} catch (final Exception ex) {
- if (msg.what != CameraActions.RELEASE && mCamera != null) {
+ if (cameraAction != CameraActions.RELEASE && mCamera != null) {
// TODO: Handle this better
mCamera.close();
mCamera = null;
} else if (mCamera == null) {
- if (msg.what == CameraActions.OPEN_CAMERA) {
+ if (cameraAction == CameraActions.OPEN_CAMERA) {
if (mOpenCallback != null) {
mOpenCallback.onDeviceOpenFailure(mCameraIndex,
generateHistoryString(mCameraIndex));
@@ -657,7 +658,9 @@ class AndroidCamera2AgentImpl extends CameraAgent {
}
if (ex instanceof RuntimeException) {
- mExceptionHandler.onCameraException((RuntimeException) ex);
+ String commandHistory = generateHistoryString(Integer.parseInt(mCameraId));
+ mExceptionHandler.onCameraException((RuntimeException) ex, commandHistory,
+ cameraAction, mCameraState.getState());
}
} finally {
WaitDoneBundle.unblockSyncWaiters(msg);
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 515add5..9910dd9 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
@@ -239,7 +239,7 @@ class AndroidCameraAgentImpl extends CameraAgent {
private class CameraHandler extends HistoryHandler implements Camera.ErrorCallback {
private CameraAgent mAgent;
private Camera mCamera;
- private int mCameraId;
+ private int mCameraId = -1;
private ParametersCache mParameterCache;
private int mCancelAfPending = 0;
@@ -311,7 +311,12 @@ class AndroidCameraAgentImpl extends CameraAgent {
public void onError(final int errorCode, Camera camera) {
mExceptionHandler.onCameraError(errorCode);
if (errorCode == android.hardware.Camera.CAMERA_ERROR_SERVER_DIED) {
- mExceptionHandler.onCameraException(new RuntimeException("Media server died."));
+ int lastCameraAction = getCurrentMessage();
+ mExceptionHandler.onCameraException(
+ new RuntimeException("Media server died."),
+ generateHistoryString(mCameraId),
+ lastCameraAction,
+ mCameraState.getState());
}
}
@@ -329,8 +334,9 @@ class AndroidCameraAgentImpl extends CameraAgent {
}
Log.v(TAG, "handleMessage - action = '" + CameraActions.stringify(msg.what) + "'");
+ int cameraAction = msg.what;
try {
- switch (msg.what) {
+ switch (cameraAction) {
case CameraActions.OPEN_CAMERA: {
final CameraOpenCallback openCallback = (CameraOpenCallback) msg.obj;
final int cameraId = msg.arg1;
@@ -371,6 +377,7 @@ class AndroidCameraAgentImpl extends CameraAgent {
mCamera.release();
mCameraState.setState(AndroidCameraStateHolder.CAMERA_UNOPENED);
mCamera = null;
+ mCameraId = -1;
} else {
Log.w(TAG, "Releasing camera without any camera opened.");
}
@@ -587,10 +594,9 @@ class AndroidCameraAgentImpl extends CameraAgent {
}
}
} catch (final RuntimeException ex) {
- String cameraAction = CameraActions.stringify(msg.what);
int cameraState = mCameraState.getState();
- String errorContext =
- "CameraAction[" + cameraAction + "] at CameraState[" + cameraState + "]";
+ String errorContext = "CameraAction[" + CameraActions.stringify(cameraAction) +
+ "] at CameraState[" + cameraState + "]";
Log.e(TAG, "RuntimeException during " + errorContext, ex);
// Be conservative by invalidating both CameraAgent and CameraProxy objects.
@@ -615,7 +621,9 @@ class AndroidCameraAgentImpl extends CameraAgent {
msg.arg1, generateHistoryString(cameraId));
}
} else {
- mAgent.getCameraExceptionHandler().onCameraException(ex);
+ CameraExceptionHandler exceptionHandler = mAgent.getCameraExceptionHandler();
+ exceptionHandler.onCameraException(
+ ex, generateHistoryString(mCameraId), cameraAction, cameraState);
}
} finally {
WaitDoneBundle.unblockSyncWaiters(msg);
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraExceptionHandler.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraExceptionHandler.java
index 1fcf3b5..dc71b4b 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraExceptionHandler.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraExceptionHandler.java
@@ -31,7 +31,8 @@ public class CameraExceptionHandler {
public void onCameraError(int errorCode) {
}
@Override
- public void onCameraException(RuntimeException e) {
+ public void onCameraException(
+ RuntimeException e, String commandHistory, int action, int state) {
throw e;
}
@Override
@@ -45,7 +46,8 @@ public class CameraExceptionHandler {
*/
public static interface CameraExceptionCallback {
public void onCameraError(int errorCode);
- public void onCameraException(RuntimeException e);
+ public void onCameraException(
+ RuntimeException e, String commandHistory, int action, int state);
public void onDispatchThreadException(RuntimeException e);
}
@@ -92,11 +94,13 @@ public class CameraExceptionHandler {
*
* @param ex The runtime exception object.
*/
- public void onCameraException(final RuntimeException ex) {
+ public void onCameraException(
+ final RuntimeException ex, final String commandHistory,
+ final int action, final int state) {
mHandler.post(new Runnable() {
@Override
public void run() {
- mCallback.onCameraException(ex);
+ mCallback.onCameraException(ex, commandHistory, action, state);
}
});
}
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/HistoryHandler.java b/camera2/portability/src/com/android/ex/camera2/portability/HistoryHandler.java
index ec2a555..6b1c5ab 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/HistoryHandler.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/HistoryHandler.java
@@ -35,6 +35,10 @@ class HistoryHandler extends Handler {
mMsgHistory.offerLast(-1);
}
+ Integer getCurrentMessage() {
+ return mMsgHistory.peekLast();
+ }
+
String generateHistoryString(int cameraId) {
String info = new String("HIST");
info += "_ID" + cameraId;