eframe: Remove warm-starting (#3574)
This was an ill-supported feature with little benefit or use.
This commit is contained in:
parent
74862bd129
commit
a23b959fd4
|
|
@ -212,18 +212,6 @@ pub trait App {
|
||||||
fn persist_egui_memory(&self) -> bool {
|
fn persist_egui_memory(&self) -> bool {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If `true` a warm-up call to [`Self::update`] will be issued where
|
|
||||||
/// `ctx.memory(|mem| mem.everything_is_visible())` will be set to `true`.
|
|
||||||
///
|
|
||||||
/// This can help pre-caching resources loaded by different parts of the UI, preventing stutter later on.
|
|
||||||
///
|
|
||||||
/// In this warm-up call, all painted shapes will be ignored.
|
|
||||||
///
|
|
||||||
/// The default is `false`, and it is unlikely you will want to change this.
|
|
||||||
fn warm_up_enabled(&self) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Selects the level of hardware graphics acceleration.
|
/// Selects the level of hardware graphics acceleration.
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,7 @@ use winit::event_loop::EventLoopWindowTarget;
|
||||||
|
|
||||||
use raw_window_handle::{HasRawDisplayHandle as _, HasRawWindowHandle as _};
|
use raw_window_handle::{HasRawDisplayHandle as _, HasRawWindowHandle as _};
|
||||||
|
|
||||||
use egui::{
|
use egui::{DeferredViewportUiCallback, NumExt as _, ViewportBuilder, ViewportId};
|
||||||
DeferredViewportUiCallback, NumExt as _, ViewportBuilder, ViewportId, ViewportIdPair,
|
|
||||||
ViewportInfo,
|
|
||||||
};
|
|
||||||
use egui_winit::{EventResponse, WindowSettings};
|
use egui_winit::{EventResponse, WindowSettings};
|
||||||
|
|
||||||
use crate::{epi, Theme};
|
use crate::{epi, Theme};
|
||||||
|
|
@ -206,28 +203,6 @@ impl EpiIntegration {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn warm_up(
|
|
||||||
&mut self,
|
|
||||||
app: &mut dyn epi::App,
|
|
||||||
window: &winit::window::Window,
|
|
||||||
egui_winit: &mut egui_winit::State,
|
|
||||||
) {
|
|
||||||
crate::profile_function!();
|
|
||||||
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 mut raw_input = egui_winit.take_egui_input(window, ViewportIdPair::ROOT);
|
|
||||||
raw_input.viewports =
|
|
||||||
std::iter::once((ViewportId::ROOT, ViewportInfo::default())).collect();
|
|
||||||
self.pre_update();
|
|
||||||
let full_output = self.update(app, None, raw_input);
|
|
||||||
self.post_update();
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// If `true`, it is time to close the native window.
|
/// If `true`, it is time to close the native window.
|
||||||
pub fn should_close(&self) -> bool {
|
pub fn should_close(&self) -> bool {
|
||||||
self.close
|
self.close
|
||||||
|
|
|
||||||
|
|
@ -1151,12 +1151,6 @@ mod glow_integration {
|
||||||
.expect("viewport doesn't exist")
|
.expect("viewport doesn't exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn viewport_mut(&mut self, viewport_id: ViewportId) -> &mut Viewport {
|
|
||||||
self.viewports
|
|
||||||
.get_mut(&viewport_id)
|
|
||||||
.expect("viewport doesn't exist")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn window(&self, viewport_id: ViewportId) -> Rc<Window> {
|
fn window(&self, viewport_id: ViewportId) -> Rc<Window> {
|
||||||
self.viewport(viewport_id)
|
self.viewport(viewport_id)
|
||||||
.window
|
.window
|
||||||
|
|
@ -1488,7 +1482,7 @@ mod glow_integration {
|
||||||
|
|
||||||
let app = {
|
let app = {
|
||||||
let window = glutin.window(ViewportId::ROOT);
|
let window = glutin.window(ViewportId::ROOT);
|
||||||
let mut app = app_creator(&epi::CreationContext {
|
let cc = epi::CreationContext {
|
||||||
egui_ctx: integration.egui_ctx.clone(),
|
egui_ctx: integration.egui_ctx.clone(),
|
||||||
integration_info: integration.frame.info().clone(),
|
integration_info: integration.frame.info().clone(),
|
||||||
storage: integration.frame.storage(),
|
storage: integration.frame.storage(),
|
||||||
|
|
@ -1497,18 +1491,9 @@ mod glow_integration {
|
||||||
wgpu_render_state: None,
|
wgpu_render_state: None,
|
||||||
raw_display_handle: window.raw_display_handle(),
|
raw_display_handle: window.raw_display_handle(),
|
||||||
raw_window_handle: window.raw_window_handle(),
|
raw_window_handle: window.raw_window_handle(),
|
||||||
});
|
};
|
||||||
|
crate::profile_scope!("app_creator");
|
||||||
if app.warm_up_enabled() {
|
app_creator(&cc)
|
||||||
let viewport = glutin.viewport_mut(ViewportId::ROOT);
|
|
||||||
integration.warm_up(
|
|
||||||
app.as_mut(),
|
|
||||||
&window,
|
|
||||||
viewport.egui_winit.as_mut().unwrap(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
app
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let glutin = Rc::new(RefCell::new(glutin));
|
let glutin = Rc::new(RefCell::new(glutin));
|
||||||
|
|
@ -2124,15 +2109,11 @@ mod wgpu_integration {
|
||||||
raw_display_handle: window.raw_display_handle(),
|
raw_display_handle: window.raw_display_handle(),
|
||||||
raw_window_handle: window.raw_window_handle(),
|
raw_window_handle: window.raw_window_handle(),
|
||||||
};
|
};
|
||||||
let mut app = {
|
let app = {
|
||||||
crate::profile_scope!("user_app_creator");
|
crate::profile_scope!("user_app_creator");
|
||||||
app_creator(&cc)
|
app_creator(&cc)
|
||||||
};
|
};
|
||||||
|
|
||||||
if app.warm_up_enabled() {
|
|
||||||
integration.warm_up(app.as_mut(), &window, &mut egui_winit);
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut viewport_from_window = HashMap::default();
|
let mut viewport_from_window = HashMap::default();
|
||||||
viewport_from_window.insert(window.id(), ViewportId::ROOT);
|
viewport_from_window.insert(window.id(), ViewportId::ROOT);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -153,17 +153,6 @@ impl AppRunner {
|
||||||
self.painter.canvas_id()
|
self.painter.canvas_id()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn warm_up(&mut self) {
|
|
||||||
if self.app.warm_up_enabled() {
|
|
||||||
let saved_memory: egui::Memory = self.egui_ctx.memory(|m| m.clone());
|
|
||||||
self.egui_ctx
|
|
||||||
.memory_mut(|m| m.set_everything_is_visible(true));
|
|
||||||
self.logic();
|
|
||||||
self.egui_ctx.memory_mut(|m| *m = saved_memory); // We don't want to remember that windows were huge.
|
|
||||||
self.egui_ctx.clear_animations();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn destroy(mut self) {
|
pub fn destroy(mut self) {
|
||||||
log::debug!("Destroying AppRunner");
|
log::debug!("Destroying AppRunner");
|
||||||
self.painter.destroy();
|
self.painter.destroy();
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,7 @@ impl WebRunner {
|
||||||
|
|
||||||
let follow_system_theme = web_options.follow_system_theme;
|
let follow_system_theme = web_options.follow_system_theme;
|
||||||
|
|
||||||
let mut runner = AppRunner::new(canvas_id, web_options, app_creator).await?;
|
let runner = AppRunner::new(canvas_id, web_options, app_creator).await?;
|
||||||
runner.warm_up();
|
|
||||||
self.runner.replace(Some(runner));
|
self.runner.replace(Some(runner));
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue