host/x11: default to XDamage capture; drop --untimed from viewers

X11 full-desktop capture used `ximagesrc use-damage=false`, which copies
the whole root window every frame. On servers without working MIT-SHM
(and CPU-bound everywhere else) this collapses to ~1 fps — a field test
over an xlibre host played back at roughly one frame per minute. Default
to `use-damage=true` (XDamage re-grabs only changed regions); keep
`PIXELPASS_X11_NO_DAMAGE=1` as an escape hatch for driver artifacts.

Also drop `--untimed` from both mpv invocations (viewer banner + the
interactive launcher). `--untimed` displays each frame as it decodes and
ignores audio timestamps, which drifts a shared *video* progressively
out of sync with its audio. Pacing to the audio clock keeps A/V synced
at a negligible latency cost.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-03 20:29:44 -04:00
co-authored by Claude Opus 4.8
parent b5c03e7705
commit b0ff20fe3f
6 changed files with 31 additions and 10 deletions
+8 -2
View File
@@ -523,7 +523,10 @@ mod tests {
#[test]
fn capture_summary_reflects_audio_mode() {
assert_eq!(capture_summary(&opts(None, false)), "fullscreen + system-audio");
assert_eq!(
capture_summary(&opts(None, false)),
"fullscreen + system-audio"
);
assert_eq!(
capture_summary(&opts(Some("Firefox"), false)),
"fullscreen + app-audio=Firefox"
@@ -533,7 +536,10 @@ mod tests {
capture_summary(&opts(Some("Firefox"), true)),
"fullscreen + app-audio=Firefox (strict)"
);
assert_eq!(capture_summary(&opts(None, true)), "fullscreen + system-audio");
assert_eq!(
capture_summary(&opts(None, true)),
"fullscreen + system-audio"
);
}
#[test]