expo-realtime-ivs-broadcast 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/android/build/.transforms/10a4d332fad050fdaf4ee2d7badc1ee4/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/BuildConfig.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$2.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$11$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView$webView$1$1.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManager$Companion.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManager$WhenMappings.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManager.dex +0 -0
- package/android/build/.transforms/9f2f591934de19590757f5a4b0b59398/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManagerDelegate.dex +0 -0
- package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/StageParticipant.dex +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/expo-realtime-ivs-broadcast_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/expo-realtime-ivs-broadcast_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$11$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView$webView$1$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/IVSStageManager$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/IVSStageManager$WhenMappings.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/IVSStageManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/IVSStageManagerDelegate.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/expo/modules/realtimeivsbroadcast/StageParticipant.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/expo-realtime-ivs-broadcast_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView$attachStreamWithRetry$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$10$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$1$11$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$10.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$11.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$12.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$13.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$14.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$15.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$6.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$7.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$8.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunction$9.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$AsyncFunctionWithoutArgs$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$View$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$10$$inlined$Prop$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$lambda$9$$inlined$Prop$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView$webView$1$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/IVSStageManager$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/IVSStageManager$WhenMappings.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/IVSStageManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/IVSStageManagerDelegate.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/expo/modules/realtimeivsbroadcast/StageParticipant.class +0 -0
- package/android/src/main/java/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.kt +237 -35
- package/android/src/main/java/expo/modules/realtimeivsbroadcast/IVSStageManager.kt +27 -4
- package/package.json +1 -1
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSRemoteStreamView.dex +0 -0
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoIVSStagePreviewView.dex +0 -0
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule$definition$lambda$11$$inlined$OnCreate$1.dex +0 -0
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/ExpoRealtimeIvsBroadcastModule.dex +0 -0
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManager.dex +0 -0
- package/android/build/.transforms/247a8b1d1f926cbf4f656139274d68b6/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/expo/modules/realtimeivsbroadcast/IVSStageManagerDelegate.dex +0 -0
- package/android/build/.transforms/651ce6100f81d6b65301e359b6eaf22f/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.s +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.s +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.s +0 -1
- /package/android/build/.transforms/{651ce6100f81d6b65301e359b6eaf22f → 10a4d332fad050fdaf4ee2d7badc1ee4}/results.bin +0 -0
- /package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/results.bin +0 -0
- /package/android/build/.transforms/{247a8b1d1f926cbf4f656139274d68b6 → 9f2f591934de19590757f5a4b0b59398}/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- /package/android/build/intermediates/incremental/{packageDebugAssets → mergeDebugAssets}/merger.xml +0 -0
|
@@ -5,6 +5,7 @@ import android.os.Build
|
|
|
5
5
|
import android.os.Handler
|
|
6
6
|
import android.os.Looper
|
|
7
7
|
import android.util.Log
|
|
8
|
+
import android.view.ViewTreeObserver
|
|
8
9
|
import android.widget.FrameLayout
|
|
9
10
|
import androidx.annotation.RequiresApi
|
|
10
11
|
import com.amazonaws.ivs.broadcast.BroadcastConfiguration.AspectMode
|
|
@@ -28,24 +29,82 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
28
29
|
// Props from React Native
|
|
29
30
|
private var mirror: Boolean = false
|
|
30
31
|
private var scaleMode: String = "fill"
|
|
32
|
+
|
|
33
|
+
// Track view attachment state
|
|
34
|
+
@Volatile
|
|
35
|
+
private var isViewAttached = false
|
|
31
36
|
|
|
32
37
|
init {
|
|
33
38
|
Log.i("ExpoIVSStagePreviewView", "Initializing Stage Preview View...")
|
|
34
|
-
|
|
39
|
+
// Note: We don't start initialization here because isViewAttached is false
|
|
40
|
+
// The initialization will happen in onAttachedToWindow when the view is ready
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Override onLayout to ensure child views are properly sized
|
|
44
|
+
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
|
|
45
|
+
super.onLayout(changed, left, top, right, bottom)
|
|
46
|
+
|
|
47
|
+
// Manually layout children to fill the entire view
|
|
48
|
+
val childWidth = right - left
|
|
49
|
+
val childHeight = bottom - top
|
|
50
|
+
|
|
51
|
+
// Use safe iteration - get count once and check for null children
|
|
52
|
+
val count = childCount
|
|
53
|
+
for (i in 0 until count) {
|
|
54
|
+
val child = getChildAt(i) ?: continue // Skip null children
|
|
55
|
+
try {
|
|
56
|
+
child.layout(0, 0, childWidth, childHeight)
|
|
57
|
+
} catch (e: Exception) {
|
|
58
|
+
Log.w("ExpoIVSStagePreviewView", "Error laying out child $i: ${e.message}")
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
Log.d("ExpoIVSStagePreviewView", "📐 onLayout: ${childWidth}x${childHeight}, children: $count")
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Override onMeasure to properly measure children
|
|
66
|
+
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
|
67
|
+
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
|
|
68
|
+
|
|
69
|
+
val width = MeasureSpec.getSize(widthMeasureSpec)
|
|
70
|
+
val height = MeasureSpec.getSize(heightMeasureSpec)
|
|
71
|
+
|
|
72
|
+
// Measure all children with exact dimensions
|
|
73
|
+
val childWidthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY)
|
|
74
|
+
val childHeightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
75
|
+
|
|
76
|
+
// Use safe iteration - get count once and check for null children
|
|
77
|
+
val count = childCount
|
|
78
|
+
for (i in 0 until count) {
|
|
79
|
+
val child = getChildAt(i) ?: continue // Skip null children
|
|
80
|
+
try {
|
|
81
|
+
child.measure(childWidthSpec, childHeightSpec)
|
|
82
|
+
} catch (e: Exception) {
|
|
83
|
+
Log.w("ExpoIVSStagePreviewView", "Error measuring child $i: ${e.message}")
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
Log.d("ExpoIVSStagePreviewView", "📐 onMeasure: ${width}x${height}")
|
|
35
88
|
}
|
|
36
89
|
|
|
37
90
|
private fun resolveStageManagerAndStreamWithRetry() {
|
|
91
|
+
// Guard: Don't proceed if view is not attached
|
|
92
|
+
if (!isViewAttached) {
|
|
93
|
+
Log.w("ExpoIVSStagePreviewView", "⚠️ View not attached, skipping resolveStageManagerAndStreamWithRetry")
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
|
|
38
97
|
Log.d("ExpoIVSStagePreviewView", "Attempting to resolve StageManager (attempt ${retryCount + 1})...")
|
|
39
98
|
|
|
40
99
|
val manager = IVSStageManager.instance
|
|
41
100
|
|
|
42
101
|
if (manager == null) {
|
|
43
|
-
if (retryCount < maxRetries) {
|
|
102
|
+
if (retryCount < maxRetries && isViewAttached) {
|
|
44
103
|
retryCount++
|
|
45
104
|
Log.w("ExpoIVSStagePreviewView", "IVSStageManager not ready, retrying in ${retryDelayMs}ms...")
|
|
46
105
|
mainHandler.postDelayed({ resolveStageManagerAndStreamWithRetry() }, retryDelayMs)
|
|
47
106
|
} else {
|
|
48
|
-
Log.e("ExpoIVSStagePreviewView", "IVSStageManager singleton is null after $maxRetries attempts.")
|
|
107
|
+
Log.e("ExpoIVSStagePreviewView", "IVSStageManager singleton is null after $maxRetries attempts or view detached.")
|
|
49
108
|
}
|
|
50
109
|
return
|
|
51
110
|
}
|
|
@@ -57,16 +116,21 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
57
116
|
}
|
|
58
117
|
|
|
59
118
|
private fun attachStreamWithRetry() {
|
|
119
|
+
// Guard: Don't attach if view is not attached to window
|
|
120
|
+
if (!isViewAttached) {
|
|
121
|
+
Log.w("ExpoIVSStagePreviewView", "⚠️ View not attached to window, skipping attachStreamWithRetry")
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
|
|
60
125
|
val cameraDevice = this.stageManager?.getLocalCameraDevice()
|
|
61
126
|
|
|
62
127
|
if (cameraDevice == null) {
|
|
63
|
-
|
|
64
|
-
if (retryCount < maxRetries) {
|
|
128
|
+
if (retryCount < maxRetries && isViewAttached) {
|
|
65
129
|
retryCount++
|
|
66
130
|
Log.w("ExpoIVSStagePreviewView", "Camera device not ready, retrying in ${retryDelayMs}ms...")
|
|
67
131
|
mainHandler.postDelayed({ attachStreamWithRetry() }, retryDelayMs)
|
|
68
132
|
} else {
|
|
69
|
-
Log.e("ExpoIVSStagePreviewView", "Camera device not available after $maxRetries attempts.")
|
|
133
|
+
Log.e("ExpoIVSStagePreviewView", "Camera device not available after $maxRetries attempts or view detached.")
|
|
70
134
|
}
|
|
71
135
|
return
|
|
72
136
|
}
|
|
@@ -78,19 +142,27 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
78
142
|
}
|
|
79
143
|
|
|
80
144
|
val newDeviceUrn = cameraDevice.descriptor.urn
|
|
145
|
+
Log.i("ExpoIVSStagePreviewView", "📷 attachStreamWithRetry - Camera: ${cameraDevice.descriptor.friendlyName}, URN: $newDeviceUrn")
|
|
146
|
+
Log.i("ExpoIVSStagePreviewView", "📷 Current preview URN: $currentPreviewDeviceUrn, Has preview: ${ivsImagePreviewView != null}")
|
|
81
147
|
|
|
82
|
-
// If preview exists for the same device, do nothing.
|
|
83
148
|
if (ivsImagePreviewView != null && this.currentPreviewDeviceUrn == newDeviceUrn) {
|
|
84
149
|
Log.d("ExpoIVSStagePreviewView", "Already showing preview for device: $newDeviceUrn")
|
|
85
150
|
return
|
|
86
151
|
}
|
|
87
152
|
|
|
88
|
-
// Cleanup existing preview
|
|
89
|
-
|
|
153
|
+
// Cleanup existing preview - clear references first, then remove view
|
|
154
|
+
val oldPreview = ivsImagePreviewView
|
|
155
|
+
if (oldPreview != null) {
|
|
90
156
|
Log.d("ExpoIVSStagePreviewView", "Cleaning up existing preview")
|
|
91
|
-
removeView(ivsImagePreviewView)
|
|
92
157
|
ivsImagePreviewView = null
|
|
93
|
-
|
|
158
|
+
currentPreviewDeviceUrn = null
|
|
159
|
+
if (oldPreview.parent == this) {
|
|
160
|
+
try {
|
|
161
|
+
removeView(oldPreview)
|
|
162
|
+
} catch (e: Exception) {
|
|
163
|
+
Log.w("ExpoIVSStagePreviewView", "Error removing old preview: ${e.message}")
|
|
164
|
+
}
|
|
165
|
+
}
|
|
94
166
|
}
|
|
95
167
|
|
|
96
168
|
try {
|
|
@@ -102,23 +174,54 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
102
174
|
return
|
|
103
175
|
}
|
|
104
176
|
|
|
105
|
-
|
|
177
|
+
// Use getPreviewView() with aspect mode to get a fresh preview view
|
|
178
|
+
// This is more reliable than using the previewView property after camera swap
|
|
179
|
+
val newPreview = try {
|
|
180
|
+
imageDevice.getPreviewView(AspectMode.FILL)
|
|
181
|
+
} catch (e: Exception) {
|
|
182
|
+
Log.w("ExpoIVSStagePreviewView", "getPreviewView(FILL) failed, trying previewView property: ${e.message}")
|
|
183
|
+
imageDevice.previewView
|
|
184
|
+
}
|
|
185
|
+
|
|
106
186
|
if (newPreview == null) {
|
|
107
|
-
|
|
108
|
-
if (retryCount < maxRetries) {
|
|
187
|
+
if (retryCount < maxRetries && isViewAttached) {
|
|
109
188
|
retryCount++
|
|
110
189
|
Log.w("ExpoIVSStagePreviewView", "Preview view is null, retrying in ${retryDelayMs}ms (attempt $retryCount)...")
|
|
111
190
|
mainHandler.postDelayed({ attachStreamWithRetry() }, retryDelayMs)
|
|
112
191
|
} else {
|
|
113
|
-
Log.e("ExpoIVSStagePreviewView", "Failed to get preview view from camera after $maxRetries attempts")
|
|
192
|
+
Log.e("ExpoIVSStagePreviewView", "Failed to get preview view from camera after $maxRetries attempts or view detached")
|
|
114
193
|
}
|
|
115
194
|
return
|
|
116
195
|
}
|
|
117
196
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
197
|
+
Log.i("ExpoIVSStagePreviewView", "📷 Got preview view: ${newPreview.javaClass.simpleName}, hashCode: ${newPreview.hashCode()}")
|
|
198
|
+
|
|
199
|
+
// Double-check we're still attached before modifying view hierarchy
|
|
200
|
+
if (!isViewAttached) {
|
|
201
|
+
Log.w("ExpoIVSStagePreviewView", "⚠️ View detached while getting preview, aborting")
|
|
202
|
+
return
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// IMPORTANT: Check if preview is attached to another parent and detach it first
|
|
206
|
+
val existingParent = newPreview.parent
|
|
207
|
+
if (existingParent != null && existingParent != this) {
|
|
208
|
+
Log.w("ExpoIVSStagePreviewView", "Preview view has another parent, detaching first...")
|
|
209
|
+
(existingParent as? android.view.ViewGroup)?.removeView(newPreview)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// If already attached to this view, no need to re-add
|
|
213
|
+
if (newPreview.parent == this) {
|
|
214
|
+
Log.d("ExpoIVSStagePreviewView", "Preview already attached to this view")
|
|
215
|
+
this.ivsImagePreviewView = newPreview
|
|
216
|
+
this.currentPreviewDeviceUrn = newDeviceUrn
|
|
217
|
+
applyProps()
|
|
218
|
+
return
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Final check before adding view
|
|
222
|
+
if (!isViewAttached) {
|
|
223
|
+
Log.w("ExpoIVSStagePreviewView", "⚠️ View detached before addView, aborting")
|
|
224
|
+
return
|
|
122
225
|
}
|
|
123
226
|
|
|
124
227
|
newPreview.layoutParams = FrameLayout.LayoutParams(
|
|
@@ -131,13 +234,55 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
131
234
|
this.currentPreviewDeviceUrn = newDeviceUrn
|
|
132
235
|
|
|
133
236
|
applyProps()
|
|
237
|
+
|
|
238
|
+
// Force layout update - measure and layout immediately with current dimensions
|
|
239
|
+
if (width > 0 && height > 0) {
|
|
240
|
+
val widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY)
|
|
241
|
+
val heightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
242
|
+
newPreview.measure(widthSpec, heightSpec)
|
|
243
|
+
newPreview.layout(0, 0, width, height)
|
|
244
|
+
Log.i("ExpoIVSStagePreviewView", "📐 Forced layout: preview now ${newPreview.measuredWidth}x${newPreview.measuredHeight}")
|
|
245
|
+
} else {
|
|
246
|
+
// Parent not yet measured, use ViewTreeObserver to layout after measure
|
|
247
|
+
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
|
248
|
+
override fun onGlobalLayout() {
|
|
249
|
+
viewTreeObserver.removeOnGlobalLayoutListener(this)
|
|
250
|
+
// Guard: check if still attached and preview exists
|
|
251
|
+
if (!isViewAttached) {
|
|
252
|
+
Log.w("ExpoIVSStagePreviewView", "📐 Deferred layout skipped - view detached")
|
|
253
|
+
return
|
|
254
|
+
}
|
|
255
|
+
val preview = ivsImagePreviewView ?: return
|
|
256
|
+
if (this@ExpoIVSStagePreviewView.width > 0 && this@ExpoIVSStagePreviewView.height > 0) {
|
|
257
|
+
val w = this@ExpoIVSStagePreviewView.width
|
|
258
|
+
val h = this@ExpoIVSStagePreviewView.height
|
|
259
|
+
val wSpec = MeasureSpec.makeMeasureSpec(w, MeasureSpec.EXACTLY)
|
|
260
|
+
val hSpec = MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY)
|
|
261
|
+
try {
|
|
262
|
+
preview.measure(wSpec, hSpec)
|
|
263
|
+
preview.layout(0, 0, w, h)
|
|
264
|
+
Log.i("ExpoIVSStagePreviewView", "📐 Deferred layout: preview now ${preview.measuredWidth}x${preview.measuredHeight}")
|
|
265
|
+
} catch (e: Exception) {
|
|
266
|
+
Log.w("ExpoIVSStagePreviewView", "📐 Deferred layout error: ${e.message}")
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
})
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Also request layout for next frame
|
|
274
|
+
newPreview.requestLayout()
|
|
275
|
+
requestLayout()
|
|
276
|
+
invalidate()
|
|
277
|
+
|
|
134
278
|
Log.i("ExpoIVSStagePreviewView", "✅ Successfully attached camera preview for: ${cameraDevice.descriptor.friendlyName}")
|
|
279
|
+
Log.i("ExpoIVSStagePreviewView", "📷 Preview dimensions: ${newPreview.width}x${newPreview.height}, visibility: ${newPreview.visibility}")
|
|
280
|
+
Log.i("ExpoIVSStagePreviewView", "📷 Parent dimensions: ${this.width}x${this.height}, childCount: ${this.childCount}")
|
|
135
281
|
} catch (e: Exception) {
|
|
136
282
|
Log.e("ExpoIVSStagePreviewView", "❌ Failed to attach camera preview: ${e.message}", e)
|
|
137
283
|
this.ivsImagePreviewView = null
|
|
138
284
|
this.currentPreviewDeviceUrn = null
|
|
139
285
|
|
|
140
|
-
// Retry on exception as well
|
|
141
286
|
if (retryCount < maxRetries) {
|
|
142
287
|
retryCount++
|
|
143
288
|
Log.w("ExpoIVSStagePreviewView", "Retrying after exception in ${retryDelayMs}ms (attempt $retryCount)...")
|
|
@@ -148,7 +293,8 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
148
293
|
|
|
149
294
|
// Public method for manager to notify when camera changes (e.g., after swapCamera)
|
|
150
295
|
fun refreshPreview() {
|
|
151
|
-
Log.
|
|
296
|
+
Log.i("ExpoIVSStagePreviewView", "🔄 Refresh preview requested - clearing current preview and reattaching")
|
|
297
|
+
Log.i("ExpoIVSStagePreviewView", "🔄 Current URN before refresh: $currentPreviewDeviceUrn")
|
|
152
298
|
|
|
153
299
|
// Ensure we're on the main thread
|
|
154
300
|
if (Looper.myLooper() != Looper.getMainLooper()) {
|
|
@@ -156,23 +302,38 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
156
302
|
return
|
|
157
303
|
}
|
|
158
304
|
|
|
159
|
-
//
|
|
160
|
-
if (
|
|
305
|
+
// Don't refresh if view is no longer attached
|
|
306
|
+
if (!isViewAttached) {
|
|
307
|
+
Log.w("ExpoIVSStagePreviewView", "🔄 Skipping refresh - view not attached")
|
|
308
|
+
return
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Capture and clear references BEFORE removing view
|
|
312
|
+
val oldPreview = ivsImagePreviewView
|
|
313
|
+
ivsImagePreviewView = null
|
|
314
|
+
currentPreviewDeviceUrn = null
|
|
315
|
+
|
|
316
|
+
// Now remove the old preview if it exists
|
|
317
|
+
if (oldPreview != null && oldPreview.parent == this) {
|
|
318
|
+
Log.i("ExpoIVSStagePreviewView", "🔄 Removing old preview view")
|
|
161
319
|
try {
|
|
162
|
-
removeView(
|
|
320
|
+
removeView(oldPreview)
|
|
163
321
|
} catch (e: Exception) {
|
|
164
322
|
Log.w("ExpoIVSStagePreviewView", "Error removing old preview view: ${e.message}")
|
|
165
323
|
}
|
|
166
|
-
ivsImagePreviewView = null
|
|
167
324
|
}
|
|
168
|
-
currentPreviewDeviceUrn = null
|
|
169
325
|
|
|
170
326
|
retryCount = 0
|
|
171
|
-
// Add a
|
|
172
|
-
// before attaching the new one (prevents green screen on camera swap)
|
|
327
|
+
// Add a delay to allow the new camera stream to initialize
|
|
173
328
|
mainHandler.postDelayed({
|
|
174
|
-
|
|
175
|
-
|
|
329
|
+
// Double-check we're still attached before trying to attach stream
|
|
330
|
+
if (isViewAttached) {
|
|
331
|
+
Log.i("ExpoIVSStagePreviewView", "🔄 Now attaching new preview after delay")
|
|
332
|
+
attachStreamWithRetry()
|
|
333
|
+
} else {
|
|
334
|
+
Log.w("ExpoIVSStagePreviewView", "🔄 Skipping attach - view no longer attached")
|
|
335
|
+
}
|
|
336
|
+
}, 200)
|
|
176
337
|
}
|
|
177
338
|
|
|
178
339
|
private fun applyProps() {
|
|
@@ -180,7 +341,6 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
180
341
|
setScaleMode(this.scaleMode)
|
|
181
342
|
}
|
|
182
343
|
|
|
183
|
-
// Prop setters
|
|
184
344
|
fun setMirror(mirror: Boolean) {
|
|
185
345
|
this.mirror = mirror
|
|
186
346
|
(ivsImagePreviewView as? ImagePreviewView)?.setMirrored(this.mirror)
|
|
@@ -204,20 +364,62 @@ class ExpoIVSStagePreviewView(context: Context, appContext: AppContext) : ExpoVi
|
|
|
204
364
|
|
|
205
365
|
override fun onAttachedToWindow() {
|
|
206
366
|
super.onAttachedToWindow()
|
|
367
|
+
isViewAttached = true
|
|
207
368
|
Log.d("ExpoIVSStagePreviewView", "View attached to window")
|
|
208
|
-
|
|
369
|
+
|
|
370
|
+
// If we don't have a preview yet, try to attach one
|
|
209
371
|
if (ivsImagePreviewView == null) {
|
|
210
372
|
retryCount = 0
|
|
211
373
|
resolveStageManagerAndStreamWithRetry()
|
|
374
|
+
} else {
|
|
375
|
+
// Re-add the preview if it was removed during detach
|
|
376
|
+
val preview = ivsImagePreviewView
|
|
377
|
+
if (preview != null && preview.parent == null) {
|
|
378
|
+
Log.d("ExpoIVSStagePreviewView", "Re-adding preview on attach")
|
|
379
|
+
try {
|
|
380
|
+
addView(preview)
|
|
381
|
+
} catch (e: Exception) {
|
|
382
|
+
Log.w("ExpoIVSStagePreviewView", "Error re-adding preview: ${e.message}")
|
|
383
|
+
// Try fresh attach
|
|
384
|
+
ivsImagePreviewView = null
|
|
385
|
+
currentPreviewDeviceUrn = null
|
|
386
|
+
retryCount = 0
|
|
387
|
+
attachStreamWithRetry()
|
|
388
|
+
}
|
|
389
|
+
}
|
|
212
390
|
}
|
|
213
391
|
}
|
|
214
392
|
|
|
215
393
|
override fun onDetachedFromWindow() {
|
|
216
|
-
super.onDetachedFromWindow()
|
|
217
394
|
Log.d("ExpoIVSStagePreviewView", "View detached from window")
|
|
218
|
-
|
|
395
|
+
isViewAttached = false
|
|
396
|
+
|
|
397
|
+
// Remove pending callbacks FIRST to prevent any async operations
|
|
219
398
|
mainHandler.removeCallbacksAndMessages(null)
|
|
220
|
-
|
|
399
|
+
|
|
400
|
+
// Unregister from manager BEFORE touching views
|
|
221
401
|
stageManager?.unregisterPreviewView(this)
|
|
402
|
+
|
|
403
|
+
// Capture reference before clearing
|
|
404
|
+
val preview = ivsImagePreviewView
|
|
405
|
+
|
|
406
|
+
// Clear references BEFORE removing view to prevent race conditions
|
|
407
|
+
// This ensures no other code can access the preview during removal
|
|
408
|
+
ivsImagePreviewView = null
|
|
409
|
+
currentPreviewDeviceUrn = null
|
|
410
|
+
|
|
411
|
+
// Remove the preview view synchronously if it exists and is our child
|
|
412
|
+
// We do this AFTER clearing references but BEFORE calling super
|
|
413
|
+
// to ensure the view hierarchy is consistent
|
|
414
|
+
if (preview != null && preview.parent == this) {
|
|
415
|
+
try {
|
|
416
|
+
removeView(preview)
|
|
417
|
+
Log.d("ExpoIVSStagePreviewView", "Preview removed synchronously on detach")
|
|
418
|
+
} catch (e: Exception) {
|
|
419
|
+
Log.w("ExpoIVSStagePreviewView", "Error removing preview on detach: ${e.message}")
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
super.onDetachedFromWindow()
|
|
222
424
|
}
|
|
223
425
|
}
|
|
@@ -165,16 +165,39 @@ class IVSStageManager(private val context: Context) : Stage.Strategy, StageRende
|
|
|
165
165
|
return
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
Log.i("ExpoIVSStageManager", "🔄 Swapping camera from ${currentDevice.descriptor.friendlyName} to ${newCamera.descriptor.friendlyName}")
|
|
169
|
+
|
|
170
|
+
// First, notify preview views to clear their current preview
|
|
171
|
+
// This releases the old camera's preview before we switch
|
|
172
|
+
previewViews.mapNotNull { it.get() }.forEach { view ->
|
|
173
|
+
mainHandler.post {
|
|
174
|
+
try {
|
|
175
|
+
// Force clear the preview by calling refreshPreview which removes the old one
|
|
176
|
+
Log.i("ExpoIVSStageManager", "🔄 Clearing preview before swap")
|
|
177
|
+
} catch (e: Exception) {
|
|
178
|
+
Log.w("ExpoIVSStageManager", "Error clearing preview: ${e.message}")
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Update the local camera reference
|
|
168
184
|
localCamera = newCamera
|
|
169
|
-
|
|
185
|
+
|
|
186
|
+
// Create new stream with video configuration
|
|
187
|
+
val oldStream = cameraStream
|
|
188
|
+
cameraStream = ImageLocalStageStream(newCamera, this.stageConfiguration.videoConfiguration)
|
|
189
|
+
|
|
190
|
+
// Refresh the stage strategy to use the new stream
|
|
170
191
|
stage?.refreshStrategy()
|
|
171
|
-
|
|
192
|
+
|
|
193
|
+
Log.i("ExpoIVSStageManager", "✅ Camera swapped to: ${newCamera.descriptor.friendlyName}, URN: ${newCamera.descriptor.urn}")
|
|
172
194
|
|
|
173
195
|
// Delay the preview refresh to allow the new camera stream to fully initialize
|
|
174
|
-
// The
|
|
196
|
+
// The back camera especially needs more time to warm up
|
|
175
197
|
mainHandler.postDelayed({
|
|
198
|
+
Log.i("ExpoIVSStageManager", "🔄 Triggering preview refresh after camera swap")
|
|
176
199
|
notifyPreviewViewsToRefresh()
|
|
177
|
-
},
|
|
200
|
+
}, 500) // 500ms delay for camera to fully initialize
|
|
178
201
|
}
|
|
179
202
|
|
|
180
203
|
private fun notifyPreviewViewsToRefresh() {
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
����
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
��
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values
DELETED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�3�3�4�1�7
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
��
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/android/build/intermediates/incremental/{packageDebugAssets → mergeDebugAssets}/merger.xml
RENAMED
|
File without changes
|