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:
@@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user