aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/tty.rs14
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);