mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
Disentangle frame callback sequence from real DRM sequence
It can currently happen that the estimated VBlank timer fires right before a real VBlank, which can cause some sequence collisions, which might cause frame callbacks to never be sent. To prevent this, just track the frame callback sequence fully separately. There isn't really any harm in this, and if we accidentally increment it more frequently than necessary then nothing terrible will happen.
This commit is contained in:
@@ -199,6 +199,10 @@ impl Winit {
|
||||
RedrawState::WaitingForEstimatedVBlankAndQueued(_) => unreachable!(),
|
||||
}
|
||||
|
||||
output_state.frame_callback_sequence = output_state.frame_callback_sequence.wrapping_add(1);
|
||||
|
||||
// FIXME: this should wait until a frame callback from the host compositor, but it redraws
|
||||
// right away instead.
|
||||
if output_state.unfinished_animations_remain {
|
||||
self.backend.window().request_redraw();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user