diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-11-20 12:55:45 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-11-21 07:14:27 +0300 |
| commit | 9d522ed51e75d1253793f9f5ec42b8faf36e47e7 (patch) | |
| tree | 1cae16bfde4f02ea61eb64f31699f12cf55961be /src/backend | |
| parent | 8ef5cc2297c18063907ab1d4d690162b5a58e54d (diff) | |
| download | niri-9d522ed51e75d1253793f9f5ec42b8faf36e47e7.tar.gz niri-9d522ed51e75d1253793f9f5ec42b8faf36e47e7.tar.bz2 niri-9d522ed51e75d1253793f9f5ec42b8faf36e47e7.zip | |
tty: Throttle VBlanks on displays running faster than expected
Co-authored-by: Christian Meissl <meissl.christian@gmail.com>
Co-authored-by: Scott McKendry <39483124+scottmckendry@users.noreply.github.com>
Diffstat (limited to 'src/backend')
| -rw-r--r-- | src/backend/tty.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 891e8c79..fcae8087 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -1633,6 +1633,22 @@ impl Tty { presentation_time }; + if output_state + .vblank_throttle + .throttle(refresh_interval, time, move |state| { + let meta = DrmEventMetadata { + sequence: meta.sequence, + time: DrmEventTime::Monotonic(Duration::ZERO), + }; + + let tty = state.backend.tty(); + tty.on_vblank(&mut state.niri, node, crtc, meta); + }) + { + // Throttled. + return; + } + let redraw_needed = match mem::replace(&mut output_state.redraw_state, RedrawState::Idle) { RedrawState::WaitingForVBlank { redraw_needed } => redraw_needed, state @ (RedrawState::Idle |
