fix for capturing black screens randomly.

This commit is contained in:
KingKDot
2026-03-21 23:09:24 -05:00
parent 0af798471f
commit 0207049993
@@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/binary" "encoding/binary"
"errors"
"image" "image"
"image/draw" "image/draw"
"log" "log"
@@ -14,6 +15,7 @@ import (
"strings" "strings"
"sync" "sync"
"sync/atomic" "sync/atomic"
"syscall"
"time" "time"
rt "overlord-client/cmd/agent/runtime" rt "overlord-client/cmd/agent/runtime"
@@ -97,6 +99,14 @@ func CaptureAndSend(ctx context.Context, env *rt.Env) error {
} }
t0 := time.Now() t0 := time.Now()
img, err := safeCaptureDisplay(display) img, err := safeCaptureDisplay(display)
if err != nil {
img, err = safeCaptureDisplay(display)
if err != nil && errors.Is(err, syscall.EINVAL) {
ResetDesktopCapture()
ResetMonitorCache()
img, err = safeCaptureDisplay(display)
}
}
if err != nil { if err != nil {
log.Printf("capture: capture failed: %v (sending black frame)", err) log.Printf("capture: capture failed: %v (sending black frame)", err)
return sendBlackFrame(ctx, env) return sendBlackFrame(ctx, env)