Skip to content

Commit b194ef1

Browse files
fix: Fix InitializationException and rethrow in onError callback (mrousavy#3179) (mrousavy#3385)
1 parent 54df86a commit b194ef1

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,13 @@ class CameraSession(internal val context: Context, internal val callback: Callba
103103
}
104104
Log.i(TAG, "configure { ... }: Waiting for lock...")
105105

106-
val provider = cameraProvider.await(mainExecutor)
106+
val provider = try {
107+
cameraProvider.await(mainExecutor)
108+
} catch (error: Throwable) {
109+
Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error)
110+
callback.onError(error)
111+
return
112+
}
107113

108114
mutex.withLock {
109115
// Let caller configure a new configuration for the Camera.

package/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@ class CameraDevicesManager(private val reactContext: ReactApplicationContext) :
6464
cameraManager.registerAvailabilityCallback(callback, null)
6565
coroutineScope.launch {
6666
Log.i(TAG, "Initializing ProcessCameraProvider...")
67-
cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor)
67+
cameraProvider = try {
68+
ProcessCameraProvider.getInstance(reactContext).await(executor)
69+
} catch (error: Throwable) {
70+
Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error)
71+
sendAvailableDevicesChangedEvent()
72+
return@launch
73+
}
6874
Log.i(TAG, "Initializing ExtensionsManager...")
6975
extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor)
7076
Log.i(TAG, "Successfully initialized!")

0 commit comments

Comments
 (0)