mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 05:40:03 -04:00
Simplify a little
This commit is contained in:
@@ -825,10 +825,18 @@ mod glow_integration {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn window(&self, viewport_id: ViewportId) -> Rc<RefCell<Viewport>> {
|
fn viewport(&self, viewport_id: ViewportId) -> Rc<RefCell<Viewport>> {
|
||||||
self.viewports
|
self.viewports
|
||||||
.get(&viewport_id)
|
.get(&viewport_id)
|
||||||
.cloned()
|
.cloned()
|
||||||
|
.expect("viewport doesn't exist")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn window(&self, viewport_id: ViewportId) -> Rc<RefCell<winit::window::Window>> {
|
||||||
|
self.viewport(viewport_id)
|
||||||
|
.borrow()
|
||||||
|
.window
|
||||||
|
.clone()
|
||||||
.expect("winit window doesn't exist")
|
.expect("winit window doesn't exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -974,23 +982,11 @@ mod glow_integration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let system_theme = system_theme(
|
let system_theme = system_theme(
|
||||||
&glutin_ctx
|
&glutin_ctx.window(ViewportId::ROOT).borrow(),
|
||||||
.window(ViewportId::ROOT)
|
|
||||||
.borrow()
|
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow(),
|
|
||||||
&self.native_options,
|
&self.native_options,
|
||||||
);
|
);
|
||||||
let mut integration = epi_integration::EpiIntegration::new(
|
let mut integration = epi_integration::EpiIntegration::new(
|
||||||
&glutin_ctx
|
&glutin_ctx.window(ViewportId::ROOT).borrow(),
|
||||||
.window(ViewportId::ROOT)
|
|
||||||
.borrow()
|
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow(),
|
|
||||||
system_theme,
|
system_theme,
|
||||||
&self.app_name,
|
&self.app_name,
|
||||||
&self.native_options,
|
&self.native_options,
|
||||||
@@ -1038,10 +1034,6 @@ mod glow_integration {
|
|||||||
glutin_ctx
|
glutin_ctx
|
||||||
.window(ViewportId::ROOT)
|
.window(ViewportId::ROOT)
|
||||||
.borrow()
|
.borrow()
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow()
|
|
||||||
.set_cursor_hittest(false)
|
.set_cursor_hittest(false)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
@@ -1052,6 +1044,8 @@ mod glow_integration {
|
|||||||
{
|
{
|
||||||
let window = glutin_ctx.window(ViewportId::ROOT);
|
let window = glutin_ctx.window(ViewportId::ROOT);
|
||||||
let window = &mut *window.borrow_mut();
|
let window = &mut *window.borrow_mut();
|
||||||
|
let viewport = glutin_ctx.viewport(ViewportId::ROOT);
|
||||||
|
let viewport = &mut *viewport.borrow_mut();
|
||||||
app = app_creator(&epi::CreationContext {
|
app = app_creator(&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(),
|
||||||
@@ -1059,20 +1053,15 @@ mod glow_integration {
|
|||||||
gl: Some(gl.clone()),
|
gl: Some(gl.clone()),
|
||||||
#[cfg(feature = "wgpu")]
|
#[cfg(feature = "wgpu")]
|
||||||
wgpu_render_state: None,
|
wgpu_render_state: None,
|
||||||
raw_display_handle: window
|
raw_display_handle: window.raw_display_handle(),
|
||||||
.window
|
raw_window_handle: window.raw_window_handle(),
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow()
|
|
||||||
.raw_display_handle(),
|
|
||||||
raw_window_handle: window.window.as_ref().unwrap().borrow().raw_window_handle(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if app.warm_up_enabled() {
|
if app.warm_up_enabled() {
|
||||||
integration.warm_up(
|
integration.warm_up(
|
||||||
app.as_mut(),
|
app.as_mut(),
|
||||||
&window.window.as_ref().unwrap().borrow(),
|
window,
|
||||||
window.egui_winit.as_mut().unwrap(),
|
viewport.egui_winit.as_mut().unwrap(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1185,24 +1174,25 @@ mod glow_integration {
|
|||||||
|
|
||||||
// Rendering the sync viewport
|
// Rendering the sync viewport
|
||||||
|
|
||||||
let window = glutin.borrow().viewports.get(&id_pair.this).cloned();
|
let viewport = glutin.borrow().viewports.get(&id_pair.this).cloned();
|
||||||
let Some(window) = window else { return };
|
let Some(viewport) = viewport else { return };
|
||||||
|
|
||||||
let window = &mut *window.borrow_mut();
|
let viewport = &mut *viewport.borrow_mut();
|
||||||
let Some(winit_state) = &mut window.egui_winit else {
|
let Some(winit_state) = &mut viewport.egui_winit else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let Some(win) = window.window.clone() else {
|
let Some(window) = viewport.window.clone() else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let win = win.borrow();
|
let window = window.borrow();
|
||||||
let mut input = winit_state.take_egui_input(&win, id_pair);
|
|
||||||
|
let mut input = winit_state.take_egui_input(&window, id_pair);
|
||||||
input.time = Some(beginning.elapsed().as_secs_f64());
|
input.time = Some(beginning.elapsed().as_secs_f64());
|
||||||
let output = egui_ctx.run(input, |ctx| {
|
let output = egui_ctx.run(input, |ctx| {
|
||||||
viewport_ui_cb(ctx);
|
viewport_ui_cb(ctx);
|
||||||
});
|
});
|
||||||
|
|
||||||
let screen_size_in_pixels: [u32; 2] = win.inner_size().into();
|
let screen_size_in_pixels: [u32; 2] = window.inner_size().into();
|
||||||
|
|
||||||
let clipped_primitives = egui_ctx.tessellate(output.shapes);
|
let clipped_primitives = egui_ctx.tessellate(output.shapes);
|
||||||
|
|
||||||
@@ -1216,17 +1206,17 @@ mod glow_integration {
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.make_not_current()
|
.make_not_current()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.make_current(window.gl_surface.as_ref().unwrap())
|
.make_current(viewport.gl_surface.as_ref().unwrap())
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if !window
|
if !viewport
|
||||||
.gl_surface
|
.gl_surface
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.is_current(glutin.current_gl_context.as_ref().unwrap())
|
.is_current(glutin.current_gl_context.as_ref().unwrap())
|
||||||
{
|
{
|
||||||
let builder = &&glutin.builders[&window.id_pair.this];
|
let builder = &glutin.builders[&viewport.id_pair.this];
|
||||||
log::error!("egui::show_viewport_immediate with title: `{:?}` is not created in main thread, try to use wgpu!", builder.title.clone().unwrap_or_default());
|
log::error!("egui::show_viewport_immediate with title: `{:?}` is not created in main thread, try to use wgpu!", builder.title.clone().unwrap_or_default());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1240,7 +1230,7 @@ mod glow_integration {
|
|||||||
&output.textures_delta,
|
&output.textures_delta,
|
||||||
);
|
);
|
||||||
crate::profile_scope!("swap_buffers");
|
crate::profile_scope!("swap_buffers");
|
||||||
if let Err(err) = window
|
if let Err(err) = viewport
|
||||||
.gl_surface
|
.gl_surface
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.expect("failed to get surface to swap buffers")
|
.expect("failed to get surface to swap buffers")
|
||||||
@@ -1254,7 +1244,7 @@ mod glow_integration {
|
|||||||
log::error!("swap_buffers failed: {err}");
|
log::error!("swap_buffers failed: {err}");
|
||||||
}
|
}
|
||||||
winit_state.handle_platform_output(
|
winit_state.handle_platform_output(
|
||||||
&win,
|
&window,
|
||||||
id_pair.this,
|
id_pair.this,
|
||||||
egui_ctx,
|
egui_ctx,
|
||||||
output.platform_output,
|
output.platform_output,
|
||||||
@@ -1405,15 +1395,13 @@ mod glow_integration {
|
|||||||
|
|
||||||
running.integration.save(
|
running.integration.save(
|
||||||
running.app.as_mut(),
|
running.app.as_mut(),
|
||||||
running
|
Some(
|
||||||
.glutin_ctx
|
&running
|
||||||
.borrow()
|
.glutin_ctx
|
||||||
.window(ViewportId::ROOT)
|
.borrow()
|
||||||
.borrow()
|
.window(ViewportId::ROOT)
|
||||||
.window
|
.borrow(),
|
||||||
.as_ref()
|
),
|
||||||
.map(|w| w.borrow())
|
|
||||||
.as_deref(),
|
|
||||||
);
|
);
|
||||||
running.app.on_exit(Some(&running.gl));
|
running.app.on_exit(Some(&running.gl));
|
||||||
running.painter.borrow_mut().destroy();
|
running.painter.borrow_mut().destroy();
|
||||||
@@ -1471,21 +1459,14 @@ mod glow_integration {
|
|||||||
|
|
||||||
let control_flow;
|
let control_flow;
|
||||||
{
|
{
|
||||||
let viewport = glutin.borrow().viewports.get(&viewport_id).cloned();
|
let viewport = glutin.borrow().viewport(viewport_id);
|
||||||
let viewport = viewport.unwrap();
|
let window = glutin.borrow().window(viewport_id);
|
||||||
|
|
||||||
let screen_size_in_pixels: [u32; 2] = viewport
|
let screen_size_in_pixels: [u32; 2] = window.borrow().inner_size().into();
|
||||||
.borrow()
|
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow()
|
|
||||||
.inner_size()
|
|
||||||
.into();
|
|
||||||
|
|
||||||
{
|
{
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
let viewport = &mut *viewport.borrow_mut();
|
||||||
let window = viewport.window.as_ref().unwrap().borrow();
|
let window = window.borrow();
|
||||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
||||||
|
|
||||||
egui::FullOutput {
|
egui::FullOutput {
|
||||||
@@ -1608,25 +1589,9 @@ mod glow_integration {
|
|||||||
EventResult::Wait
|
EventResult::Wait
|
||||||
};
|
};
|
||||||
|
|
||||||
integration.maybe_autosave(
|
integration.maybe_autosave(app.as_mut(), Some(&window.borrow()));
|
||||||
app.as_mut(),
|
|
||||||
viewport
|
|
||||||
.borrow()
|
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.map(|w| w.borrow())
|
|
||||||
.as_deref(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if viewport
|
if window.borrow().is_minimized() == Some(true) {
|
||||||
.borrow()
|
|
||||||
.window
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.borrow()
|
|
||||||
.is_minimized()
|
|
||||||
== Some(true)
|
|
||||||
{
|
|
||||||
// On Mac, a minimized Window uses up all CPU:
|
// On Mac, a minimized Window uses up all CPU:
|
||||||
// https://github.com/emilk/egui/issues/325
|
// https://github.com/emilk/egui/issues/325
|
||||||
crate::profile_scope!("minimized_sleep");
|
crate::profile_scope!("minimized_sleep");
|
||||||
|
|||||||
Reference in New Issue
Block a user