diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue index 73f7907d80..cd5d0f009c 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue @@ -95,6 +95,7 @@ const props = defineProps<{ const isCameraOn = ref(false) const isShowingPreview = ref(false) +const isInitializingCamera = ref(false) const originalWidgets = ref([]) const videoRef = ref() const videoContainerRef = ref() @@ -553,6 +554,10 @@ async function handleRetake() { async function startCameraPreview() { if (props.readonly) return + // Prevent concurrent camera initialization attempts + if (isInitializingCamera.value) return + isInitializingCamera.value = true + capturedImageUrl.value = null try { @@ -638,6 +643,8 @@ async function startCameraPreview() { stopStreamTracks() isShowingPreview.value = false + } finally { + isInitializingCamera.value = false } }