diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-11 09:02:55 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-11 09:02:55 +0400 |
| commit | 15b6c84af02d2a35eb591af7290d354f48cc67da (patch) | |
| tree | b558217f577c91e29916028cd0f3fca6d0965952 /src/backend/tty.rs | |
| parent | 077714964535b51cfbffc651fdef3eba269f9273 (diff) | |
| download | niri-15b6c84af02d2a35eb591af7290d354f48cc67da.tar.gz niri-15b6c84af02d2a35eb591af7290d354f48cc67da.tar.bz2 niri-15b6c84af02d2a35eb591af7290d354f48cc67da.zip | |
tty: Start new tracy frame only when queueing redraw
Diffstat (limited to 'src/backend/tty.rs')
| -rw-r--r-- | src/backend/tty.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 16ea4079..5ad08649 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -672,16 +672,13 @@ impl Tty { return; }; + // Finish the Tracy frame, if any. + drop(surface.vblank_frame.take()); + let name = &surface.name; trace!("vblank on {name} {meta:?}"); span.emit_text(name); - drop(surface.vblank_frame.take()); // Drop the old one first. - let vblank_frame = tracy_client::Client::running() - .unwrap() - .non_continuous_frame(surface.vblank_frame_name); - surface.vblank_frame = Some(vblank_frame); - let presentation_time = match meta.time { DrmEventTime::Monotonic(time) => time, DrmEventTime::Realtime(_) => { @@ -782,6 +779,11 @@ impl Tty { }; if redraw_needed || output_state.unfinished_animations_remain { + let vblank_frame = tracy_client::Client::running() + .unwrap() + .non_continuous_frame(surface.vblank_frame_name); + surface.vblank_frame = Some(vblank_frame); + niri.queue_redraw(output); } else { niri.send_frame_callbacks(&output); |
