diff --git a/patches/react-native-vision-camera+4.6.3.patch b/patches/react-native-vision-camera+4.6.3.patch new file mode 100644 index 000000000..2585bd768 --- /dev/null +++ b/patches/react-native-vision-camera+4.6.3.patch @@ -0,0 +1,84 @@ +diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt +index 862c03a..740531d 100644 +--- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt ++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt +@@ -103,7 +103,13 @@ class CameraSession(internal val context: Context, internal val callback: Callba + } + Log.i(TAG, "configure { ... }: Waiting for lock...") + +- val provider = cameraProvider.await(mainExecutor) ++ val provider = try { ++ cameraProvider.await(mainExecutor) ++ } catch (error: Throwable) { ++ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) ++ callback.onError(error) ++ return ++ } + + mutex.withLock { + // Let caller configure a new configuration for the Camera. +diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt.rej b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt.rej +new file mode 100644 +index 0000000..3b9de40 +--- /dev/null ++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt.rej +@@ -0,0 +1,17 @@ ++--- node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt +++++ node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt ++@@ -103,7 +103,13 @@ class CameraSession(internal val context: Context, internal val callback: Callba ++ } ++ Log.i(TAG, "configure { ... }: Waiting for lock...") ++ ++- val provider = cameraProvider.await(mainExecutor) +++ val provider = try { +++ cameraProvider.await(mainExecutor) +++ } catch (error: Throwable) { +++ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) +++ callback.onError(error) +++ return +++ } ++ ++ mutex.withLock { ++ // Let caller configure a new configuration for the Camera. +diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt +index 581d003..c8a7f94 100644 +--- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt ++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt +@@ -64,7 +64,13 @@ class CameraDevicesManager(private val reactContext: ReactApplicationContext) : + cameraManager.registerAvailabilityCallback(callback, null) + coroutineScope.launch { + Log.i(TAG, "Initializing ProcessCameraProvider...") +- cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor) ++ cameraProvider = try { ++ ProcessCameraProvider.getInstance(reactContext).await(executor) ++ } catch (error: Throwable) { ++ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) ++ sendAvailableDevicesChangedEvent() ++ return@launch ++ } + Log.i(TAG, "Initializing ExtensionsManager...") + extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor) + Log.i(TAG, "Successfully initialized!") +diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt.rej b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt.rej +new file mode 100644 +index 0000000..e6121c9 +--- /dev/null ++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt.rej +@@ -0,0 +1,17 @@ ++--- node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt +++++ node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt ++@@ -64,7 +64,13 @@ class CameraDevicesManager(private val reactContext: ReactApplicationContext) : ++ cameraManager.registerAvailabilityCallback(callback, null) ++ coroutineScope.launch { ++ Log.i(TAG, "Initializing ProcessCameraProvider...") ++- cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor) +++ cameraProvider = try { +++ ProcessCameraProvider.getInstance(reactContext).await(executor) +++ } catch (error: Throwable) { +++ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) +++ sendAvailableDevicesChangedEvent() +++ return@launch +++ } ++ Log.i(TAG, "Initializing ExtensionsManager...") ++ extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor) ++ Log.i(TAG, "Successfully initialized!") diff --git a/patches/react-native-vision-camera+b194ef1.patch b/patches/react-native-vision-camera+b194ef1.patch deleted file mode 100644 index 4c73514ec..000000000 --- a/patches/react-native-vision-camera+b194ef1.patch +++ /dev/null @@ -1,49 +0,0 @@ -From b194ef17902d8702f584b8f0a5dee0f5c96fceb1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=B8ren=20Frederiksen?= -Date: Thu, 30 Jan 2025 11:10:39 +0100 -Subject: [PATCH] fix: Fix `InitializationException` and rethrow in `onError` - callback (#3179) (#3385) - ---- - .../main/java/com/mrousavy/camera/core/CameraSession.kt | 8 +++++++- - .../com/mrousavy/camera/react/CameraDevicesManager.kt | 8 +++++++- - 2 files changed, 14 insertions(+), 2 deletions(-) - -diff --git a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt -index 862c03a146..740531d953 100644 ---- a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt -+++ b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt -@@ -103,7 +103,13 @@ class CameraSession(internal val context: Context, internal val callback: Callba - } - Log.i(TAG, "configure { ... }: Waiting for lock...") - -- val provider = cameraProvider.await(mainExecutor) -+ val provider = try { -+ cameraProvider.await(mainExecutor) -+ } catch (error: Throwable) { -+ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) -+ callback.onError(error) -+ return -+ } - - mutex.withLock { - // Let caller configure a new configuration for the Camera. -diff --git a/package/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt b/package/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -index 581d003c48..c8a7f94a8c 100644 ---- a/package/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -+++ b/package/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -@@ -64,7 +64,13 @@ class CameraDevicesManager(private val reactContext: ReactApplicationContext) : - cameraManager.registerAvailabilityCallback(callback, null) - coroutineScope.launch { - Log.i(TAG, "Initializing ProcessCameraProvider...") -- cameraProvider = ProcessCameraProvider.getInstance(reactContext).await(executor) -+ cameraProvider = try { -+ ProcessCameraProvider.getInstance(reactContext).await(executor) -+ } catch (error: Throwable) { -+ Log.e(TAG, "Failed to get CameraProvider! Error: ${error.message}", error) -+ sendAvailableDevicesChangedEvent() -+ return@launch -+ } - Log.i(TAG, "Initializing ExtensionsManager...") - extensionsManager = ExtensionsManager.getInstanceAsync(reactContext, cameraProvider!!).await(executor) - Log.i(TAG, "Successfully initialized!")