better cleaning up

This commit is contained in:
KingKDot
2026-08-01 00:04:41 -05:00
parent 6b83e65a6c
commit b68a306708
12 changed files with 266 additions and 27 deletions
+28 -5
View File
@@ -445,18 +445,30 @@ func captureAllDisplaysAndSend(ctx context.Context, env *rt.Env) error {
}
quality := desktopJPEGQuality()
frame, _, err := buildFrame(canvas, 0, quality)
frame, err := buildInitialDesktopThumbnail(canvas, quality)
canvasW, canvasH := canvas.Rect.Dx(), canvas.Rect.Dy()
PutRGBA(canvas)
canvas = nil
if err != nil {
return err
}
frame.Header.FPS = 1
log.Printf("capture: all-displays initial frame %dx%d (%d monitors)", canvasW, canvasH, n)
return wire.WriteMsg(ctx, env.Conn, frame)
}
func buildInitialDesktopThumbnail(img *image.RGBA, quality int) (wire.Frame, error) {
jpegBytes, err := encodeJPEG(img, quality)
return wire.Frame{
Type: "frame",
Header: wire.FrameHeader{
Monitor: 0,
FPS: 1,
Format: "jpeg",
},
Data: jpegBytes,
}, err
}
func supportsCapture() bool {
return safeActiveDisplays() > 0
}
@@ -665,14 +677,25 @@ func consumeFullFrame() bool {
}
func ResetPrev() {
prevMu.Lock()
prevFrame = nil
prevMu.Unlock()
clearDesktopPreviousFrame()
lastKeyframe.Store(0)
requestFullFrames(2)
resetH264Encoder()
}
func clearDesktopPreviousFrame() {
prevMu.Lock()
prevFrame = nil
prevMu.Unlock()
}
func CleanupDesktopStream() {
ResetDesktopCapture()
ResetPrev()
resetHEVCEncoder()
ResetFrameSlots()
}
func ResetPrevbackstage() {
backstagePrevMu.Lock()
backstagePrevFrame = nil