Skip to content

Commit

Permalink
Update run.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
rustbasic authored Oct 2, 2024
1 parent 730ba74 commit 9a82d32
Showing 1 changed file with 34 additions and 37 deletions.
71 changes: 34 additions & 37 deletions crates/eframe/src/native/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,48 +77,45 @@ impl<T: WinitApp> WinitAppWrapper<T> {
event_loop: &ActiveEventLoop,
event_result: Result<EventResult>,
) {
let now = Instant::now();
let mut exit = false;

log::trace!("event_result: {event_result:?}");

let combined_result = event_result.and_then(|event_result| {
match event_result {
EventResult::Wait => {
event_loop.set_control_flow(ControlFlow::Wait);
Ok(event_result)
}
EventResult::RepaintNow(window_id) => {
log::trace!("RepaintNow of {window_id:?}",);
let mut event_result = event_result;

if cfg!(target_os = "windows") {
// Fix flickering on Windows, see https://github.com/emilk/egui/pull/2280
self.winit_app.run_ui_and_paint(event_loop, window_id)
} else {
// Fix for https://github.com/emilk/egui/issues/2425
self.windows_next_repaint_times
.insert(window_id, Instant::now());
Ok(event_result)
}
}
EventResult::RepaintNext(window_id) => {
log::trace!("RepaintNext of {window_id:?}",);
self.windows_next_repaint_times
.insert(window_id, Instant::now());
Ok(event_result)
}
EventResult::RepaintAt(window_id, repaint_time) => {
self.windows_next_repaint_times.insert(
window_id,
self.windows_next_repaint_times
.get(&window_id)
.map_or(repaint_time, |last| (*last).min(repaint_time)),
);
Ok(event_result)
}
EventResult::Exit => {
exit = true;
Ok(event_result)
}
if cfg!(target_os = "windows") {
if let Ok(EventResult::RepaintNow(window_id)) = event_result {
log::info!("RepaintNow of {window_id:?}",);
self.windows_next_repaint_times.insert(window_id, now);

// Fix flickering on Windows, see https://github.com/emilk/egui/pull/2280
event_result = self.winit_app.run_ui_and_paint(event_loop, window_id);
}
}

let combined_result = event_result.map(|event_result| match event_result {
EventResult::Wait => {
event_loop.set_control_flow(ControlFlow::Wait);
event_result
}
EventResult::RepaintNow(window_id) => {
log::trace!("RepaintNow of {window_id:?}",);
self.windows_next_repaint_times.insert(window_id, now);
event_result
}
EventResult::RepaintNext(window_id) => {
log::trace!("RepaintNext of {window_id:?}",);
self.windows_next_repaint_times.insert(window_id, now);
event_result
}
EventResult::RepaintAt(window_id, when) => {
self.windows_next_repaint_times.insert(window_id, when);
event_result
}
EventResult::Exit => {
exit = true;
event_result
}
});

Expand Down

0 comments on commit 9a82d32

Please sign in to comment.