Merge "Camera: fix NPE in buffer error callback" into qt-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d0a1ab93d4
@@ -1026,6 +1026,9 @@ public class CameraDeviceImpl extends CameraDevice
|
|||||||
// callback is valid
|
// callback is valid
|
||||||
executor = checkExecutor(executor, callback);
|
executor = checkExecutor(executor, callback);
|
||||||
|
|
||||||
|
synchronized(mInterfaceLock) {
|
||||||
|
checkIfCameraClosedOrInError();
|
||||||
|
|
||||||
// Make sure that there all requests have at least 1 surface; all surfaces are non-null;
|
// Make sure that there all requests have at least 1 surface; all surfaces are non-null;
|
||||||
// the surface isn't a physical stream surface for reprocessing request
|
// the surface isn't a physical stream surface for reprocessing request
|
||||||
for (CaptureRequest request : requestList) {
|
for (CaptureRequest request : requestList) {
|
||||||
@@ -1052,8 +1055,6 @@ public class CameraDeviceImpl extends CameraDevice
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized(mInterfaceLock) {
|
|
||||||
checkIfCameraClosedOrInError();
|
|
||||||
if (repeating) {
|
if (repeating) {
|
||||||
stopRepeating();
|
stopRepeating();
|
||||||
}
|
}
|
||||||
@@ -2343,14 +2344,21 @@ public class CameraDeviceImpl extends CameraDevice
|
|||||||
if (errorCode == ERROR_CAMERA_BUFFER) {
|
if (errorCode == ERROR_CAMERA_BUFFER) {
|
||||||
// Because 1 stream id could map to multiple surfaces, we need to specify both
|
// Because 1 stream id could map to multiple surfaces, we need to specify both
|
||||||
// streamId and surfaceId.
|
// streamId and surfaceId.
|
||||||
List<Surface> surfaces =
|
OutputConfiguration config = mConfiguredOutputs.get(
|
||||||
mConfiguredOutputs.get(resultExtras.getErrorStreamId()).getSurfaces();
|
resultExtras.getErrorStreamId());
|
||||||
for (Surface surface : surfaces) {
|
if (config == null) {
|
||||||
|
Log.v(TAG, String.format(
|
||||||
|
"Stream %d has been removed. Skipping buffer lost callback",
|
||||||
|
resultExtras.getErrorStreamId()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (Surface surface : config.getSurfaces()) {
|
||||||
if (!request.containsTarget(surface)) {
|
if (!request.containsTarget(surface)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.v(TAG, String.format("Lost output buffer reported for frame %d, target %s",
|
Log.v(TAG, String.format(
|
||||||
|
"Lost output buffer reported for frame %d, target %s",
|
||||||
frameNumber, surface));
|
frameNumber, surface));
|
||||||
}
|
}
|
||||||
failureDispatch = new Runnable() {
|
failureDispatch = new Runnable() {
|
||||||
|
|||||||
Reference in New Issue
Block a user