diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 10:03:14 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 10:03:14 +0400 |
| commit | 9d7fdc4fc048682d5e6be8d880392af727786f86 (patch) | |
| tree | 60c03aaa51f22d12ba9dc4d846f50618352ae9be /src | |
| parent | 02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 (diff) | |
| download | niri-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.rs | 17 |
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; }; |
