summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQiwen Zhao <zhao@google.com>2014-11-13 02:13:35 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-13 02:13:35 +0000
commitd4cf288862fa0bfac5299d3b3ea22d3f8924baef (patch)
tree056416d3c973baca64ec62110ffc854adf9eb3b3
parent3a7ddc3a379315a210767ce0069b9a0bce1c9990 (diff)
parentf7400b8ad32e57b89840b53c94a9fbcca66fcc5f (diff)
downloadandroid_frameworks_ex-d4cf288862fa0bfac5299d3b3ea22d3f8924baef.tar.gz
android_frameworks_ex-d4cf288862fa0bfac5299d3b3ea22d3f8924baef.tar.bz2
android_frameworks_ex-d4cf288862fa0bfac5299d3b3ea22d3f8924baef.zip
am f7400b8a: am 3238136a: Merge commit \'733ca8dfa76ac34d1f9caff8798d01a4a8f44002\' into lmp-mr1-dev
* commit 'f7400b8ad32e57b89840b53c94a9fbcca66fcc5f': Return more detailed debugging info for logging purposes.
-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;