Skip to content

Commit

Permalink
Remove unnecessary allocation in RepaintCause::new (emilk#4146)
Browse files Browse the repository at this point in the history
Hi!

I'm using egui for the UI of a VST3/Clap plugin, and this kind of
environment is rather picky on performance. I use
[assert_no_alloc](https://crates.io/crates/assert_no_alloc) to make sure
the audio thread is never allocating. The audio thread may request a
repaint of the GUI tho, and this is where a saw that it may allocate
when tracing the repaint reason.

Turns out it's not necessary, `Location::caller` is `'static`, so using
a `&'static str` instead of a `String` in `RepaintCause::file` will just
work, so this PR just does that.
  • Loading branch information
valsteen authored and hacknus committed Oct 30, 2024
1 parent 82d9974 commit 255f535
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions crates/egui/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ struct ViewportState {
#[derive(Clone, Debug)]
pub struct RepaintCause {
/// What file had the call that requested the repaint?
pub file: String,
pub file: &'static str,

/// What line number of the the call that requested the repaint?
pub line: u32,
Expand All @@ -269,7 +269,7 @@ impl RepaintCause {
pub fn new() -> Self {
let caller = Location::caller();
Self {
file: caller.file().to_owned(),
file: caller.file(),
line: caller.line(),
}
}
Expand Down

0 comments on commit 255f535

Please sign in to comment.