1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 05:10:03 -04:00

Fewer arguments to EpiIntegration::update

This commit is contained in:
Emil Ernerfeldt
2023-11-12 15:58:52 +01:00
parent 6ddc22e122
commit 1c5c19817d
3 changed files with 22 additions and 14 deletions

View File

@@ -429,7 +429,9 @@ impl EpiIntegration {
let saved_memory: egui::Memory = self.egui_ctx.memory(|mem| mem.clone());
self.egui_ctx
.memory_mut(|mem| mem.set_everything_is_visible(true));
let full_output = self.update(app, window, egui_winit, None, ViewportIdPair::ROOT);
let raw_input = egui_winit.take_egui_input(window, ViewportIdPair::ROOT);
let full_output = self.update(app, window, None, raw_input);
self.pending_full_output.append(full_output); // Handle it next frame
self.egui_ctx.memory_mut(|mem| *mem = saved_memory); // We don't want to remember that windows were huge.
self.egui_ctx.clear_animations();
@@ -486,9 +488,8 @@ impl EpiIntegration {
&mut self,
app: &mut dyn epi::App,
window: &winit::window::Window,
egui_winit: &mut egui_winit::State,
viewport_ui_cb: Option<&ViewportUiCallback>,
id_pair: ViewportIdPair,
mut raw_input: egui::RawInput,
) -> egui::FullOutput {
let frame_start = std::time::Instant::now();
@@ -496,20 +497,17 @@ impl EpiIntegration {
self.frame.info.window_info =
read_window_info(window, self.egui_ctx.pixels_per_point(), &self.window_state);
let mut raw_input = egui_winit.take_egui_input(window, id_pair);
raw_input.time = Some(self.beginning.elapsed().as_secs_f64());
// Run user code:
// Run user code - this can create immediate viewports, so hold no locks over this!
let full_output = self.egui_ctx.run(raw_input, |egui_ctx| {
if let Some(viewport_ui_cb) = viewport_ui_cb {
// Child viewport
crate::profile_scope!("callback");
debug_assert!(id_pair.this != ViewportId::ROOT);
viewport_ui_cb(egui_ctx);
} else {
// Root viewport
crate::profile_scope!("App::update");
debug_assert_eq!(id_pair, ViewportIdPair::ROOT);
app.update(egui_ctx, &mut self.frame);
}
});

View File

@@ -1478,6 +1478,7 @@ mod glow_integration {
let viewport = &mut *viewport.borrow_mut();
let window = window.borrow();
let egui_winit = viewport.egui_winit.as_mut().unwrap();
let raw_input = egui_winit.take_egui_input(&window, viewport.id_pair);
// ------------------------------------------------------------
// The update function, which could call immediate viewports,
@@ -1492,9 +1493,8 @@ mod glow_integration {
} = integration.update(
app.as_mut(),
&window,
egui_winit,
viewport.viewport_ui_cb.as_deref(),
viewport.id_pair,
raw_input,
);
// ------------------------------------------------------------
@@ -2426,6 +2426,16 @@ mod wgpu_integration {
drop(shared_lock); // Release lock!
let raw_input = egui_winit.borrow_mut().as_mut().unwrap().take_egui_input(
&window.borrow(),
ViewportIdPair {
this: viewport_id,
parent: parent_id,
},
);
// ------------------------------------------------------------
// Runs the update, which could call immediate viewports,
// so make sure we hold no locks here!
egui::FullOutput {
@@ -2437,14 +2447,12 @@ mod wgpu_integration {
} = integration.update(
app.as_mut(),
&window.borrow(),
egui_winit.borrow_mut().as_mut().unwrap(),
viewport_ui_cb.as_deref(),
ViewportIdPair {
this: viewport_id,
parent: parent_id,
},
raw_input,
);
// ------------------------------------------------------------
integration.handle_platform_output(
&window.borrow(),
viewport_id,

View File

@@ -182,6 +182,8 @@ impl State {
window: &winit::window::Window,
id_pair: ViewportIdPair,
) -> egui::RawInput {
crate::profile_function!();
let pixels_per_point = self.pixels_per_point();
self.egui_input.time = Some(self.start_time.elapsed().as_secs_f64());