Skip to content

Commit

Permalink
only run one update per frame drawn (#14023)
Browse files Browse the repository at this point in the history
# Objective

- Fixes #13965 

## Solution

- Don't run multiple updates for a single frame
  • Loading branch information
mockersf authored Jun 26, 2024
1 parent 0ee9827 commit 3a04d38
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion crates/bevy_winit/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ struct WinitAppRunnerState<T: Event> {
user_event_received: bool,
/// Is `true` if the app has requested a redraw since the last update.
redraw_requested: bool,
/// Is `true` if the app has already updated since the last redraw.
ran_update_since_last_redraw: bool,
/// Is `true` if enough time has elapsed since `last_update` to run another update.
wait_elapsed: bool,
/// Number of "forced" updates to trigger on application start
Expand Down Expand Up @@ -104,6 +106,7 @@ impl<T: Event> WinitAppRunnerState<T> {
device_event_received: false,
user_event_received: false,
redraw_requested: false,
ran_update_since_last_redraw: false,
wait_elapsed: false,
// 3 seems to be enough, 5 is a safe margin
startup_forced_updates: 5,
Expand Down Expand Up @@ -369,6 +372,9 @@ impl<T: Event> ApplicationHandler<T> for WinitAppRunnerState<T> {
WindowEvent::Destroyed => {
self.winit_events.send(WindowDestroyed { window });
}
WindowEvent::RedrawRequested => {
self.ran_update_since_last_redraw = false;
}
_ => {}
}

Expand Down Expand Up @@ -499,7 +505,12 @@ impl<T: Event> ApplicationHandler<T> for WinitAppRunnerState<T> {

if should_update {
// Not redrawing, but the timeout elapsed.
self.run_app_update();
if !self.ran_update_since_last_redraw {
self.run_app_update();
self.ran_update_since_last_redraw = true;
} else {
self.redraw_requested = true;
}

// Running the app may have changed the WinitSettings resource, so we have to re-extract it.
let (config, windows) = focused_windows_state.get(self.world());
Expand Down

0 comments on commit 3a04d38

Please sign in to comment.