From 9d7fdc4fc048682d5e6be8d880392af727786f86 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 10 Oct 2023 10:03:14 +0400 Subject: Fix redraw state resetting on redraw cancel --- src/niri.rs | 17 ++++++++++++++--- 1 file 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; }; -- cgit