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:
+3
-1
@@ -280,7 +280,9 @@ impl Drop for Routing {
|
||||
/// initial `lost`. In every other mode (whole-desktop, or best-effort app
|
||||
/// filtering) the loopback keeps audio flowing from the outset, so there is no
|
||||
/// initial gap to report. Pure: no I/O, so the emit decision is unit-testable.
|
||||
pub(super) fn initial_app_audio_state(opts: &HostOpts) -> Option<crate::common::output::AppAudioState> {
|
||||
pub(super) fn initial_app_audio_state(
|
||||
opts: &HostOpts,
|
||||
) -> Option<crate::common::output::AppAudioState> {
|
||||
(opts.app.is_some() && opts.strict_audio).then_some(crate::common::output::AppAudioState::Lost)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user