Skip to content

Commit

Permalink
Fix calling request_repaint_after every frame causing immediate repai…
Browse files Browse the repository at this point in the history
…nt (#3978)

* Closes #3925
* Closes #3109
  • Loading branch information
emilk authored Feb 5, 2024
1 parent d018265 commit 1858167
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions crates/egui/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,16 @@ impl ContextImpl {
) {
let viewport = self.viewports.entry(viewport_id).or_default();

// Each request results in two repaints, just to give some things time to settle.
// This solves some corner-cases of missing repaints on frame-delayed responses.
viewport.repaint.outstanding = 1;
if delay == Duration::ZERO {
// Each request results in two repaints, just to give some things time to settle.
// This solves some corner-cases of missing repaints on frame-delayed responses.
viewport.repaint.outstanding = 1;
} else {
// For non-zero delays, we only repaint once, because
// otherwise we would just schedule an immediate repaint _now_,
// which would then clear the delay and repaint again.
// Hovering a tooltip is a good example of a case where we want to repaint after a delay.
}

viewport.repaint.causes.push(cause);

Expand Down

0 comments on commit 1858167

Please sign in to comment.