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:
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user