notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit a618da3ed7a0b020c77a134764dfbb343c04fad6
parent 800ab26cb48a05c558742f226ad4128305600286
Author: William Casarin <jb55@jb55.com>
Date:   Sun,  9 Jul 2023 14:20:50 -0700

show fps on top panel

Diffstat:
Msrc/app.rs | 15++++++++++++++-
Msrc/lib.rs | 1+
2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/app.rs b/src/app.rs @@ -1,6 +1,7 @@ use crate::abbrev; use crate::contacts::Contacts; use crate::fonts::setup_fonts; +use crate::frame_history::FrameHistory; use crate::images::fetch_img; use crate::ui::padding; use crate::Result; @@ -49,6 +50,8 @@ pub struct Damus { events: Vec<EventId>, img_cache: ImageCache, + + frame_history: crate::frame_history::FrameHistory, } impl Default for Damus { @@ -61,6 +64,7 @@ impl Default for Damus { events: vec![], img_cache: HashMap::new(), n_panels: 1, + frame_history: FrameHistory::default(), } } } @@ -428,6 +432,12 @@ fn render_panel(ctx: &egui::Context, app: &mut Damus) { { app.n_panels -= 1; } + + ui.label(format!( + "FPS: {:.2}, {:10.1}ms", + app.frame_history.fps(), + app.frame_history.mean_frame_time() * 1e3 + )); }); }); } @@ -551,7 +561,10 @@ impl eframe::App for Damus { /// Called each time the UI needs repainting, which may be many times per second. /// Put your widgets into a `SidePanel`, `TopPanel`, `CentralPanel`, `Window` or `Area`. - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { + self.frame_history + .on_new_frame(ctx.input(|i| i.time), frame.info().cpu_usage); + #[cfg(feature = "profiling")] puffin::GlobalProfiler::lock().new_frame(); update_damus(self, ctx); diff --git a/src/lib.rs b/src/lib.rs @@ -9,6 +9,7 @@ mod fonts; mod images; mod result; mod ui; +mod frame_history; pub use app::Damus; pub use error::Error;