1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-02 06:40:06 -04:00

More Id:s, less cloning

This commit is contained in:
Emil Ernerfeldt
2023-11-11 20:20:53 +01:00
parent 962eb020f8
commit 6866e5881c

View File

@@ -712,15 +712,15 @@ mod glow_integration {
fn on_resume(&mut self, event_loop: &EventLoopWindowTarget<UserEvent>) -> Result<()> { fn on_resume(&mut self, event_loop: &EventLoopWindowTarget<UserEvent>) -> Result<()> {
crate::profile_function!(); crate::profile_function!();
let viewports = self let viewports: Vec<ViewportId> = self
.viewports .viewports
.values() .iter()
.cloned() .filter(|(_, viewport)| viewport.borrow().gl_surface.is_none())
.collect::<Vec<Rc<RefCell<Viewport>>>>(); .map(|(id, _)| *id)
for viewport in viewports { .collect();
if viewport.borrow().gl_surface.is_none() {
self.init_viewport(&viewport, event_loop)?; for viewport_id in viewports {
} self.init_viewport(viewport_id, event_loop)?;
} }
Ok(()) Ok(())
} }
@@ -728,11 +728,17 @@ mod glow_integration {
#[allow(unsafe_code)] #[allow(unsafe_code)]
pub(crate) fn init_viewport( pub(crate) fn init_viewport(
&mut self, &mut self,
viewport: &Rc<RefCell<Viewport>>, viewport_id: ViewportId,
event_loop: &EventLoopWindowTarget<UserEvent>, event_loop: &EventLoopWindowTarget<UserEvent>,
) -> Result<()> { ) -> Result<()> {
crate::profile_function!(); crate::profile_function!();
let viewport = self
.viewports
.get(&viewport_id)
.cloned()
.expect("viewport doesn't exist");
let builder = &self.builders[&viewport.borrow().id_pair.this]; let builder = &self.builders[&viewport.borrow().id_pair.this];
let mut viewport = viewport.borrow_mut(); let mut viewport = viewport.borrow_mut();
// make sure we have a window or create one. // make sure we have a window or create one.
@@ -1160,8 +1166,6 @@ mod glow_integration {
.or_insert(viewport_builder); .or_insert(viewport_builder);
} }
let viewport = glutin.viewports[&id_pair.this].clone();
#[allow(unsafe_code)] #[allow(unsafe_code)]
let event_loop = unsafe { let event_loop = unsafe {
WINIT_EVENT_LOOP.with(|event_loop| { WINIT_EVENT_LOOP.with(|event_loop| {
@@ -1170,7 +1174,7 @@ mod glow_integration {
}; };
glutin glutin
.init_viewport(&viewport, event_loop) .init_viewport(id_pair.this, event_loop)
.expect("Cannot init window on egui::Context::show_viewport_immediate"); .expect("Cannot init window on egui::Context::show_viewport_immediate");
} }