fix: restore Windows webcam stream support by conditionally delegating to frontend events
All checks were successful
Deploy on Master Change / deploy (push) Successful in 38s

This commit is contained in:
2026-07-01 13:29:47 +07:00
parent d94c1733be
commit 604ce9ea16
3 changed files with 21 additions and 2 deletions

View File

@@ -1267,6 +1267,12 @@ func (a *App) startWebcamStream() {
a.streamCamStop = make(chan struct{}) a.streamCamStop = make(chan struct{})
a.mu.Unlock() a.mu.Unlock()
if !camera.IsNative {
log.Println("[WS] Platform is non-darwin, delegating webcam stream to frontend events")
runtime.EventsEmit(a.ctx, "start_webcam_stream")
return
}
if err := camera.StartCapture(); err != nil { if err := camera.StartCapture(); err != nil {
log.Printf("[WS] Failed to start native camera: %v", err) log.Printf("[WS] Failed to start native camera: %v", err)
a.mu.Lock() a.mu.Lock()
@@ -1328,7 +1334,16 @@ func (a *App) stopWebcamStream() {
return return
} }
a.isStreamingCam = false a.isStreamingCam = false
if a.streamCamStop != nil {
close(a.streamCamStop) close(a.streamCamStop)
}
if !camera.IsNative {
log.Println("[WS] Platform is non-darwin, stopping frontend webcam stream via event")
runtime.EventsEmit(a.ctx, "stop_webcam_stream")
return
}
camera.StopCapture() camera.StopCapture()
log.Println("[WS] Webcam native streaming stopped.") log.Println("[WS] Webcam native streaming stopped.")
} }

View File

@@ -3,7 +3,7 @@
package camera package camera
/* /*
#cgo LDFLAGS: -framework AVFoundation -framework Foundation -framework CoreImage -framework CoreMedia -framework CoreVideo -framework AppKit #cgo LDFLAGS: -framework AVFoundation -framework Foundation -framework CoreImage -framework CoreMedia -framework CoreVideo -framework ImageIO -framework AppKit
#include <stdlib.h> #include <stdlib.h>
int StartNativeCamera(void); int StartNativeCamera(void);
@@ -17,6 +17,8 @@ import (
"unsafe" "unsafe"
) )
const IsNative = true
// StartCapture starts native camera capture via AVCaptureSession // StartCapture starts native camera capture via AVCaptureSession
func StartCapture() error { func StartCapture() error {
ret := C.StartNativeCamera() ret := C.StartNativeCamera()

View File

@@ -4,6 +4,8 @@ package camera
import "log" import "log"
const IsNative = false
// StartCapture is a no-op on non-darwin platforms (Windows uses different webcam API) // StartCapture is a no-op on non-darwin platforms (Windows uses different webcam API)
func StartCapture() error { func StartCapture() error {
log.Println("[CAMERA] Native camera capture not supported on this platform") log.Println("[CAMERA] Native camera capture not supported on this platform")