srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/wayland/src/lock.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/wayland/src/lock.rs')
-rw-r--r--crates/wayland/src/lock.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/wayland/src/lock.rs b/crates/wayland/src/lock.rs
index 51b6158..ccdea98 100644
--- a/crates/wayland/src/lock.rs
+++ b/crates/wayland/src/lock.rs
@@ -112,6 +112,19 @@ impl SessionLockHandler for CompState {
self.lock.surfaces.clear();
self.lock.presented.clear();
self.lock.pending_confirm = None;
+ // udev backend only: the lock scene was rendered through the same
+ // per-head damage tracker as the normal desktop (see
+ // `render_udev_frame`), always with a forced full redraw, so its
+ // element-state history now reflects the lock surface rather than
+ // whatever was on screen before locking. Reset each head's buffer
+ // ages so the next normal-scene render is a full redraw too,
+ // instead of asking the tracker to diff the desktop against a
+ // now-irrelevant lock-scene history.
+ if let Some(udev) = self.udev.as_mut() {
+ for head in &mut udev.heads {
+ head.ages = [0, 0];
+ }
+ }
// Hand focus back to whatever srdwm considers the focused window.
let surface = self
.wm