mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
Fix initial paint of web app (#5633)
* Broke in https://github.com/emilk/egui/pull/5631 (for _some_ apps)
This commit is contained in:
@@ -890,7 +890,7 @@ impl ResizeObserverContext {
|
||||
let runner_ref = runner_ref.clone();
|
||||
move |entries: js_sys::Array| {
|
||||
if DEBUG_RESIZE {
|
||||
// log::info!("ResizeObserverContext callback");
|
||||
log::info!("ResizeObserverContext callback");
|
||||
}
|
||||
// Only call the wrapped closure if the egui code has not panicked
|
||||
if let Some(mut runner_lock) = runner_ref.try_lock() {
|
||||
@@ -919,6 +919,8 @@ impl ResizeObserverContext {
|
||||
if let Err(err) = runner_ref.request_animation_frame() {
|
||||
log::error!("{}", super::string_from_js_value(&err));
|
||||
};
|
||||
} else {
|
||||
log::warn!("ResizeObserverContext callback: failed to lock runner");
|
||||
}
|
||||
}
|
||||
}) as Box<dyn FnMut(js_sys::Array)>);
|
||||
|
||||
@@ -71,24 +71,27 @@ impl WebRunner {
|
||||
canvas.style().set_property("outline", "none")?;
|
||||
}
|
||||
|
||||
let text_agent = TextAgent::attach(self)?;
|
||||
{
|
||||
// First set up the app runner:
|
||||
let text_agent = TextAgent::attach(self)?;
|
||||
let app_runner =
|
||||
AppRunner::new(canvas.clone(), web_options, app_creator, text_agent).await?;
|
||||
self.app_runner.replace(Some(app_runner));
|
||||
}
|
||||
|
||||
{
|
||||
let resize_observer = events::ResizeObserverContext::new(self)?;
|
||||
|
||||
// This will (eventually) result in a `request_animation_frame` to start the render loop.
|
||||
// Properly size the canvas. Will also call `self.request_animation_frame()` (eventually)
|
||||
resize_observer.observe(&canvas);
|
||||
|
||||
self.resize_observer.replace(Some(resize_observer));
|
||||
}
|
||||
|
||||
{
|
||||
let app_runner = AppRunner::new(canvas, web_options, app_creator, text_agent).await?;
|
||||
self.app_runner.replace(Some(app_runner));
|
||||
}
|
||||
|
||||
events::install_event_handlers(self)?;
|
||||
|
||||
log::info!("event handlers installed.");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user