Merge "Camera: Avoid possible deadlock when closing advanced extension session" into sc-qpr1-dev am: 00c890cda7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15976219

Change-Id: I7ed63423fb9d1c6a58d52bb6a62d6716c6f5db84
This commit is contained in:
TreeHugger Robot
2021-10-08 20:05:08 +00:00
committed by Automerger Merge Worker

View File

@@ -873,21 +873,19 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
@Override @Override
public int submitBurst(List<Request> requests, IRequestCallback callback) { public int submitBurst(List<Request> requests, IRequestCallback callback) {
int seqId = -1; int seqId = -1;
synchronized (mInterfaceLock) { try {
try { CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback);
CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); ArrayList<CaptureRequest> captureRequests = new ArrayList<>();
ArrayList<CaptureRequest> captureRequests = new ArrayList<>(); for (Request request : requests) {
for (Request request : requests) { captureRequests.add(initializeCaptureRequest(mCameraDevice, request,
captureRequests.add(initializeCaptureRequest(mCameraDevice, request, mCameraConfigMap));
mCameraConfigMap));
}
seqId = mCaptureSession.captureBurstRequests(captureRequests,
new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback);
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to submit capture requests!");
} catch (IllegalStateException e) {
Log.e(TAG, "Capture session closed!");
} }
seqId = mCaptureSession.captureBurstRequests(captureRequests,
new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback);
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to submit capture requests!");
} catch (IllegalStateException e) {
Log.e(TAG, "Capture session closed!");
} }
return seqId; return seqId;
@@ -896,18 +894,16 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
@Override @Override
public int setRepeating(Request request, IRequestCallback callback) { public int setRepeating(Request request, IRequestCallback callback) {
int seqId = -1; int seqId = -1;
synchronized (mInterfaceLock) { try {
try { CaptureRequest repeatingRequest = initializeCaptureRequest(mCameraDevice,
CaptureRequest repeatingRequest = initializeCaptureRequest(mCameraDevice, request, mCameraConfigMap);
request, mCameraConfigMap); CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback);
CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); seqId = mCaptureSession.setSingleRepeatingRequest(repeatingRequest,
seqId = mCaptureSession.setSingleRepeatingRequest(repeatingRequest, new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback);
new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback); } catch (CameraAccessException e) {
} catch (CameraAccessException e) { Log.e(TAG, "Failed to enable repeating request!");
Log.e(TAG, "Failed to enable repeating request!"); } catch (IllegalStateException e) {
} catch (IllegalStateException e) { Log.e(TAG, "Capture session closed!");
Log.e(TAG, "Capture session closed!");
}
} }
return seqId; return seqId;
@@ -915,27 +911,23 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
@Override @Override
public void abortCaptures() { public void abortCaptures() {
synchronized (mInterfaceLock) { try {
try { mCaptureSession.abortCaptures();
mCaptureSession.abortCaptures(); } catch (CameraAccessException e) {
} catch (CameraAccessException e) { Log.e(TAG, "Failed during capture abort!");
Log.e(TAG, "Failed during capture abort!"); } catch (IllegalStateException e) {
} catch (IllegalStateException e) { Log.e(TAG, "Capture session closed!");
Log.e(TAG, "Capture session closed!");
}
} }
} }
@Override @Override
public void stopRepeating() { public void stopRepeating() {
synchronized (mInterfaceLock) { try {
try { mCaptureSession.stopRepeating();
mCaptureSession.stopRepeating(); } catch (CameraAccessException e) {
} catch (CameraAccessException e) { Log.e(TAG, "Failed during repeating capture stop!");
Log.e(TAG, "Failed during repeating capture stop!"); } catch (IllegalStateException e) {
} catch (IllegalStateException e) { Log.e(TAG, "Capture session closed!");
Log.e(TAG, "Capture session closed!");
}
} }
} }
} }