aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-10-11 09:02:55 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-10-11 09:02:55 +0400
commit15b6c84af02d2a35eb591af7290d354f48cc67da (patch)
treeb558217f577c91e29916028cd0f3fca6d0965952 /src
parent077714964535b51cfbffc651fdef3eba269f9273 (diff)
downloadniri-15b6c84af02d2a35eb591af7290d354f48cc67da.tar.gz
niri-15b6c84af02d2a35eb591af7290d354f48cc67da.tar.bz2
niri-15b6c84af02d2a35eb591af7290d354f48cc67da.zip
tty: Start new tracy frame only when queueing redraw
Diffstat (limited to 'src')
-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);