aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-29 10:13:59 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-31 23:02:38 +0400
commit7052f0129ef5d2fa5d38eef3dbb5c9296228e341 (patch)
treed043afb2c326a004daf3807c0a6e954d091a78f6 /src/niri.rs
parent962e159db61dc6c7822aa899b1d9dc86fb6a0de5 (diff)
downloadniri-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.rs11
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")]