mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 14:50: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());
|
let saved_memory: egui::Memory = self.egui_ctx.memory(|mem| mem.clone());
|
||||||
self.egui_ctx
|
self.egui_ctx
|
||||||
.memory_mut(|mem| mem.set_everything_is_visible(true));
|
.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.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.memory_mut(|mem| *mem = saved_memory); // We don't want to remember that windows were huge.
|
||||||
self.egui_ctx.clear_animations();
|
self.egui_ctx.clear_animations();
|
||||||
@@ -486,9 +488,8 @@ impl EpiIntegration {
|
|||||||
&mut self,
|
&mut self,
|
||||||
app: &mut dyn epi::App,
|
app: &mut dyn epi::App,
|
||||||
window: &winit::window::Window,
|
window: &winit::window::Window,
|
||||||
egui_winit: &mut egui_winit::State,
|
|
||||||
viewport_ui_cb: Option<&ViewportUiCallback>,
|
viewport_ui_cb: Option<&ViewportUiCallback>,
|
||||||
id_pair: ViewportIdPair,
|
mut raw_input: egui::RawInput,
|
||||||
) -> egui::FullOutput {
|
) -> egui::FullOutput {
|
||||||
let frame_start = std::time::Instant::now();
|
let frame_start = std::time::Instant::now();
|
||||||
|
|
||||||
@@ -496,20 +497,17 @@ impl EpiIntegration {
|
|||||||
|
|
||||||
self.frame.info.window_info =
|
self.frame.info.window_info =
|
||||||
read_window_info(window, self.egui_ctx.pixels_per_point(), &self.window_state);
|
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());
|
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| {
|
let full_output = self.egui_ctx.run(raw_input, |egui_ctx| {
|
||||||
if let Some(viewport_ui_cb) = viewport_ui_cb {
|
if let Some(viewport_ui_cb) = viewport_ui_cb {
|
||||||
// Child viewport
|
// Child viewport
|
||||||
crate::profile_scope!("callback");
|
crate::profile_scope!("callback");
|
||||||
debug_assert!(id_pair.this != ViewportId::ROOT);
|
|
||||||
viewport_ui_cb(egui_ctx);
|
viewport_ui_cb(egui_ctx);
|
||||||
} else {
|
} else {
|
||||||
// Root viewport
|
// Root viewport
|
||||||
crate::profile_scope!("App::update");
|
crate::profile_scope!("App::update");
|
||||||
debug_assert_eq!(id_pair, ViewportIdPair::ROOT);
|
|
||||||
app.update(egui_ctx, &mut self.frame);
|
app.update(egui_ctx, &mut self.frame);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1478,6 +1478,7 @@ mod glow_integration {
|
|||||||
let viewport = &mut *viewport.borrow_mut();
|
let viewport = &mut *viewport.borrow_mut();
|
||||||
let window = window.borrow();
|
let window = window.borrow();
|
||||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
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,
|
// The update function, which could call immediate viewports,
|
||||||
@@ -1492,9 +1493,8 @@ mod glow_integration {
|
|||||||
} = integration.update(
|
} = integration.update(
|
||||||
app.as_mut(),
|
app.as_mut(),
|
||||||
&window,
|
&window,
|
||||||
egui_winit,
|
|
||||||
viewport.viewport_ui_cb.as_deref(),
|
viewport.viewport_ui_cb.as_deref(),
|
||||||
viewport.id_pair,
|
raw_input,
|
||||||
);
|
);
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
@@ -2426,6 +2426,16 @@ mod wgpu_integration {
|
|||||||
|
|
||||||
drop(shared_lock); // Release lock!
|
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,
|
// Runs the update, which could call immediate viewports,
|
||||||
// so make sure we hold no locks here!
|
// so make sure we hold no locks here!
|
||||||
egui::FullOutput {
|
egui::FullOutput {
|
||||||
@@ -2437,14 +2447,12 @@ mod wgpu_integration {
|
|||||||
} = integration.update(
|
} = integration.update(
|
||||||
app.as_mut(),
|
app.as_mut(),
|
||||||
&window.borrow(),
|
&window.borrow(),
|
||||||
egui_winit.borrow_mut().as_mut().unwrap(),
|
|
||||||
viewport_ui_cb.as_deref(),
|
viewport_ui_cb.as_deref(),
|
||||||
ViewportIdPair {
|
raw_input,
|
||||||
this: viewport_id,
|
|
||||||
parent: parent_id,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
integration.handle_platform_output(
|
integration.handle_platform_output(
|
||||||
&window.borrow(),
|
&window.borrow(),
|
||||||
viewport_id,
|
viewport_id,
|
||||||
|
|||||||
@@ -182,6 +182,8 @@ impl State {
|
|||||||
window: &winit::window::Window,
|
window: &winit::window::Window,
|
||||||
id_pair: ViewportIdPair,
|
id_pair: ViewportIdPair,
|
||||||
) -> egui::RawInput {
|
) -> egui::RawInput {
|
||||||
|
crate::profile_function!();
|
||||||
|
|
||||||
let pixels_per_point = self.pixels_per_point();
|
let pixels_per_point = self.pixels_per_point();
|
||||||
|
|
||||||
self.egui_input.time = Some(self.start_time.elapsed().as_secs_f64());
|
self.egui_input.time = Some(self.start_time.elapsed().as_secs_f64());
|
||||||
|
|||||||
Reference in New Issue
Block a user