fix for capturing black screens randomly.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user