diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-29 10:13:59 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-31 23:02:38 +0400 |
| commit | 7052f0129ef5d2fa5d38eef3dbb5c9296228e341 (patch) | |
| tree | d043afb2c326a004daf3807c0a6e954d091a78f6 /src/niri.rs | |
| parent | 962e159db61dc6c7822aa899b1d9dc86fb6a0de5 (diff) | |
| download | niri-7052f0129ef5d2fa5d38eef3dbb5c9296228e341.tar.gz niri-7052f0129ef5d2fa5d38eef3dbb5c9296228e341.tar.bz2 niri-7052f0129ef5d2fa5d38eef3dbb5c9296228e341.zip | |
Stop screencasts on size changes
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 11 |
1 files changed, 11 insertions, 0 deletions
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")] |
