merge: HUD 常显修复

This commit is contained in:
dev-team 2026-10-23 10:45:47 +08:00
commit bd7ca29945

View File

@ -362,7 +362,7 @@ fn session(
}; };
let mut window = Window::new( let mut window = Window::new(
"mvp-remote viewer (Esc 退出)", "mvp-remote v0.6-HUD (Esc 退出)",
w, w,
h, h,
WindowOptions { WindowOptions {
@ -471,7 +471,8 @@ fn session(
} }
} }
// 6) HUD:每秒刷新一次指标,画在右上角 // 6) HUD:指标每秒刷新一次;每秒至少强制呈现一次(视频冻结/黑屏时 HUD 依然可见)
let mut need_present = dirty;
let (hud_loss, hud_jit, hud_p95, hud_dec); let (hud_loss, hud_jit, hud_p95, hud_dec);
if hud_last.elapsed() >= Duration::from_secs(1) { if hud_last.elapsed() >= Duration::from_secs(1) {
let f = stats.frames.load(Ordering::Relaxed); let f = stats.frames.load(Ordering::Relaxed);
@ -494,13 +495,14 @@ fn session(
hud_p95 = stats.gap_p95(); hud_p95 = stats.gap_p95();
hud_dec = stats.dec_fail.load(Ordering::Relaxed); hud_dec = stats.dec_fail.load(Ordering::Relaxed);
hud_last = Instant::now(); hud_last = Instant::now();
need_present = true; // HUD 面板每秒至少重绘一次
} else { } else {
hud_loss = f64::NAN; hud_loss = f64::NAN;
hud_jit = 0; hud_jit = 0;
hud_p95 = None; hud_p95 = None;
hud_dec = 0; hud_dec = 0;
} }
if dirty { if need_present {
let rtt = stats.rtt.load(Ordering::Relaxed); let rtt = stats.rtt.load(Ordering::Relaxed);
let e2e = stats.e2e.load(Ordering::Relaxed); let e2e = stats.e2e.load(Ordering::Relaxed);
let e2e_ok = stats.e2e_valid.load(Ordering::Relaxed); let e2e_ok = stats.e2e_valid.load(Ordering::Relaxed);