diff options
| author | 2019-06-24 11:32:34 -0700 | |
|---|---|---|
| committer | 2019-06-24 11:32:34 -0700 | |
| commit | 8b9b9f065c0c71b22f4f8818979494e32c58e745 (patch) | |
| tree | 4b0922c7c721c9fbc90d14f2491004dd4294caf0 | |
| parent | 8ed50556f5838e01836a5a163d7ee2c202e67d03 (diff) | |
Camera: block session init callback until ctor returns
To fix race condition where session init callback is executed
before the ctor finished (and mSessionImpl is initialized)
Test: manuall testing GCA
Bug: 134218348
Change-Id: I6985b489a8cb459d9b1dce4d56a9c3e97ceb366c
| -rw-r--r-- | core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java index 3494a7f2801e..eb331373e691 100644 --- a/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraConstrainedHighSpeedCaptureSessionImpl.java @@ -25,6 +25,7 @@ import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.StreamConfigurationMap; import android.hardware.camera2.utils.SurfaceUtils; import android.os.Handler; +import android.os.ConditionVariable; import android.util.Range; import android.view.Surface; @@ -51,6 +52,7 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl extends CameraConstrainedHighSpeedCaptureSession implements CameraCaptureSessionCore { private final CameraCharacteristics mCharacteristics; private final CameraCaptureSessionImpl mSessionImpl; + private final ConditionVariable mInitialized = new ConditionVariable(); /** * Create a new CameraCaptureSession. @@ -68,6 +70,7 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl CameraCaptureSession.StateCallback wrapperCallback = new WrapperCallback(callback); mSessionImpl = new CameraCaptureSessionImpl(id, /*input*/null, wrapperCallback, stateExecutor, deviceImpl, deviceStateExecutor, configureSuccess); + mInitialized.open(); } @Override @@ -321,11 +324,13 @@ public class CameraConstrainedHighSpeedCaptureSessionImpl @Override public void onConfigured(CameraCaptureSession session) { + mInitialized.block(); mCallback.onConfigured(CameraConstrainedHighSpeedCaptureSessionImpl.this); } @Override public void onConfigureFailed(CameraCaptureSession session) { + mInitialized.block(); mCallback.onConfigureFailed(CameraConstrainedHighSpeedCaptureSessionImpl.this); } |