From d8983d671e2bb29cc7151824afd5d72f69ce7eb7 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Wed, 15 Mar 2023 10:56:32 -0700 Subject: [PATCH] Camera: Always release the extension session after configuration Since both the session 'onConfigured' callback and the initialization session callback run within the same Handler thread, it is possible for the 'onSuccess' callback to fail to execute if there is another thread the releases the extension session and quits the thread. Ensure that the extension session is released also when we have a valid capture session. Bug: 270276341 Test: atest -c -d cts/tests/camera/src/android/hardware/camera2/cts/CameraExtensionSessionTest.java Change-Id: I03fd9b2859ae8919ca89c823fed973853030bc5f --- .../camera2/impl/CameraAdvancedExtensionSessionImpl.java | 2 +- .../hardware/camera2/impl/CameraExtensionSessionImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java index cfade5532df76..9cdf61fc2ee84 100644 --- a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java @@ -542,7 +542,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes if (mExtensionClientId >= 0) { CameraExtensionCharacteristics.unregisterClient(mExtensionClientId); - if (mInitialized) { + if (mInitialized || (mCaptureSession != null)) { notifyClose = true; CameraExtensionCharacteristics.releaseSession(); } diff --git a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java index 9c878c78855ba..365c9a25ea314 100644 --- a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java @@ -840,7 +840,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { if (mExtensionClientId >= 0) { CameraExtensionCharacteristics.unregisterClient(mExtensionClientId); - if (mInitialized) { + if (mInitialized || (mCaptureSession != null)) { notifyClose = true; CameraExtensionCharacteristics.releaseSession(); }