aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-10-10 10:03:14 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-10-10 10:03:14 +0400
commit9d7fdc4fc048682d5e6be8d880392af727786f86 (patch)
tree60c03aaa51f22d12ba9dc4d846f50618352ae9be /src
parent02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 (diff)
downloadniri-9d7fdc4fc048682d5e6be8d880392af727786f86.tar.gz
niri-9d7fdc4fc048682d5e6be8d880392af727786f86.tar.bz2
niri-9d7fdc4fc048682d5e6be8d880392af727786f86.zip
Fix redraw state resetting on redraw cancel
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/niri.rs b/src/niri.rs
index 5d121b07..4adc9e31 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -1099,18 +1099,29 @@ impl Niri {
RedrawState::Queued(_) | RedrawState::WaitingForEstimatedVBlankAndQueued(_)
));
+ let mut reset = || {
+ state.redraw_state =
+ if let RedrawState::WaitingForEstimatedVBlankAndQueued((token, _)) =
+ state.redraw_state
+ {
+ RedrawState::WaitingForEstimatedVBlank(token)
+ } else {
+ RedrawState::Idle
+ }
+ };
+
if !self.monitors_active {
- state.redraw_state = RedrawState::Idle;
+ reset();
return;
}
if !backend.is_active() {
- state.redraw_state = RedrawState::Idle;
+ reset();
return;
}
let Some(renderer) = backend.renderer() else {
- state.redraw_state = RedrawState::Idle;
+ reset();
return;
};