From 3e78aacc7e168e3e5052df23d324f7fed31281ac Mon Sep 17 00:00:00 2001 From: 21pages Date: Thu, 28 Dec 2023 21:34:54 +0800 Subject: [PATCH] add snapshot before sending SwitchDisplay (#6760) Signed-off-by: 21pages --- src/server/video_service.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/server/video_service.rs b/src/server/video_service.rs index cb1eea3ee..7ace0e4df 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -741,6 +741,14 @@ fn try_broadcast_display_changed( ) { log::info!("Display {} changed", display); if let Some(msg_out) = make_display_changed_msg(display_idx, Some(display)) { + // switch display may occur before the first video frame, add snapshot to ensure successful send + sp.snapshot(|sps| { + // so that new sub and old sub share the same encoder after switch + if sps.has_subscribes() { + bail!("SWITCH"); + } + Ok(()) + })?; sp.send(msg_out); bail!("SWITCH"); }