diff --git a/src/server/video_service.rs b/src/server/video_service.rs index 7ace0e4df..668d3a57f 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -741,15 +741,12 @@ 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"); - } + sp.send(msg_out.clone()); + // switch display may occur before the first video frame, add snapshot to send to new subscribers + sp.snapshot(move |sps| { + sps.send(msg_out.clone()); Ok(()) })?; - sp.send(msg_out); bail!("SWITCH"); } }