diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-07-27 13:43:27 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-07-27 13:43:27 +0300 |
| commit | af904d23acc7980fbf3aedf173dc96af1dd580b9 (patch) | |
| tree | b21aa1cd2c049be0632f0823a0845304cb514cb1 /src | |
| parent | ad84fc1479a779faa3d8a893a11b566e7ae22b6c (diff) | |
| download | niri-af904d23acc7980fbf3aedf173dc96af1dd580b9.tar.gz niri-af904d23acc7980fbf3aedf173dc96af1dd580b9.tar.bz2 niri-af904d23acc7980fbf3aedf173dc96af1dd580b9.zip | |
tty: Add check for vblank on idle
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/tty.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index fa7d4b18..10becafe 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -1178,6 +1178,16 @@ impl Tty { return; }; + // This happened for someone reconnecting 2 monitors with a KVM switch: + // https://github.com/YaLTeR/niri/issues/556 + // + // Maybe the vblank didn't get cancelled or got reordered weirdly? Either way, we can avoid + // crashing here. + if matches!(output_state.redraw_state, RedrawState::Idle) { + error!("got vblank for an idle output {name}"); + return; + } + // Mark the last frame as submitted. match surface.compositor.frame_submitted() { Ok(Some((mut feedback, target_presentation_time))) => { |
