From 15b6c84af02d2a35eb591af7290d354f48cc67da Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 11 Oct 2023 09:02:55 +0400 Subject: tty: Start new tracy frame only when queueing redraw --- src/backend/tty.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/backend') 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); -- cgit