From 129e21f14ee6f7b17cc68b9e50a9991311945c7d Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Thu, 15 Feb 2024 17:34:55 +0100 Subject: [PATCH] fix: Fix `Session has been closed; further changes are illegal` error by using `tryStopRepeating()` (#2568) * feat: Allow focus calls to be cancelable * Cancelable * fix: Use `tryStopRepeating` --- .../camera/core/PersistentCameraCaptureSession.kt | 3 ++- .../extensions/CameraCaptureSession+tryStopRepeating.kt | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 package/android/src/main/java/com/mrousavy/camera/extensions/CameraCaptureSession+tryStopRepeating.kt diff --git a/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt b/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt index 707c7b3..fc3276d 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/PersistentCameraCaptureSession.kt @@ -19,6 +19,7 @@ import com.mrousavy.camera.extensions.isValid import com.mrousavy.camera.extensions.openCamera import com.mrousavy.camera.extensions.precapture import com.mrousavy.camera.extensions.tryAbortCaptures +import com.mrousavy.camera.extensions.tryStopRepeating import com.mrousavy.camera.types.Flash import com.mrousavy.camera.types.Orientation import com.mrousavy.camera.types.QualityPrioritization @@ -280,8 +281,8 @@ class PersistentCameraCaptureSession(private val cameraManager: CameraManager, p val builder = repeatingRequest.createCaptureRequest(device, details, repeatingOutputs) session.setRepeatingRequest(builder.build(), null, null) } else { - session.stopRepeating() Log.d(TAG, "Stopping repeating request...") + session.tryStopRepeating() } Log.d(TAG, "Configure() done! isActive: $isActive, ID: $cameraId, device: $device, session: $session") } catch (e: CameraAccessException) { diff --git a/package/android/src/main/java/com/mrousavy/camera/extensions/CameraCaptureSession+tryStopRepeating.kt b/package/android/src/main/java/com/mrousavy/camera/extensions/CameraCaptureSession+tryStopRepeating.kt new file mode 100644 index 0000000..0810978 --- /dev/null +++ b/package/android/src/main/java/com/mrousavy/camera/extensions/CameraCaptureSession+tryStopRepeating.kt @@ -0,0 +1,9 @@ +package com.mrousavy.camera.extensions + +import android.hardware.camera2.CameraCaptureSession + +fun CameraCaptureSession.tryStopRepeating() { + try { + stopRepeating() + } catch (_: Throwable) {} +}