From 7052f0129ef5d2fa5d38eef3dbb5c9296228e341 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Mon, 29 Jan 2024 10:13:59 +0400 Subject: Stop screencasts on size changes --- src/niri.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/niri.rs') diff --git a/src/niri.rs b/src/niri.rs index 2ed62c99..424fa712 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -2434,6 +2434,7 @@ impl Niri { let scale = Scale::from(output.current_scale().fractional_scale()); let mut elements = None; + let mut casts_to_stop = vec![]; let mut casts = mem::take(&mut self.casts); for cast in &mut casts { @@ -2445,6 +2446,12 @@ impl Niri { continue; } + if cast.size != size { + debug!("stopping screencast due to output size change"); + casts_to_stop.push(cast.session_id); + continue; + } + let last = cast.last_frame_time; let min = cast.min_time_between_frames.get(); if last.is_zero() { @@ -2499,6 +2506,10 @@ impl Niri { cast.last_frame_time = target_presentation_time; } self.casts = casts; + + for id in casts_to_stop { + self.stop_cast(id); + } } #[cfg(feature = "xdp-gnome-screencast")] -- cgit