mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 13:50:04 -04:00
Remove another Rc<RefCell<_>>
This commit is contained in:
@@ -532,7 +532,7 @@ mod glow_integration {
|
|||||||
current_gl_context: Option<glutin::context::PossiblyCurrentContext>,
|
current_gl_context: Option<glutin::context::PossiblyCurrentContext>,
|
||||||
not_current_gl_context: Option<glutin::context::NotCurrentContext>,
|
not_current_gl_context: Option<glutin::context::NotCurrentContext>,
|
||||||
|
|
||||||
viewports: ViewportIdMap<Rc<RefCell<Viewport>>>,
|
viewports: ViewportIdMap<Viewport>,
|
||||||
viewport_maps: HashMap<WindowId, ViewportId>,
|
viewport_maps: HashMap<WindowId, ViewportId>,
|
||||||
window_maps: ViewportIdMap<WindowId>,
|
window_maps: ViewportIdMap<WindowId>,
|
||||||
|
|
||||||
@@ -669,13 +669,13 @@ mod glow_integration {
|
|||||||
let mut viewports = ViewportIdMap::default();
|
let mut viewports = ViewportIdMap::default();
|
||||||
viewports.insert(
|
viewports.insert(
|
||||||
ViewportId::ROOT,
|
ViewportId::ROOT,
|
||||||
Rc::new(RefCell::new(Viewport {
|
Viewport {
|
||||||
gl_surface: None,
|
gl_surface: None,
|
||||||
window: window.map(Rc::new),
|
window: window.map(Rc::new),
|
||||||
egui_winit: None,
|
egui_winit: None,
|
||||||
viewport_ui_cb: None,
|
viewport_ui_cb: None,
|
||||||
id_pair: ViewportIdPair::ROOT,
|
id_pair: ViewportIdPair::ROOT,
|
||||||
})),
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut builders = ViewportIdMap::default();
|
let mut builders = ViewportIdMap::default();
|
||||||
@@ -717,7 +717,7 @@ mod glow_integration {
|
|||||||
let viewports: Vec<ViewportId> = self
|
let viewports: Vec<ViewportId> = self
|
||||||
.viewports
|
.viewports
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|(_, viewport)| viewport.borrow().gl_surface.is_none())
|
.filter(|(_, viewport)| viewport.gl_surface.is_none())
|
||||||
.map(|(id, _)| *id)
|
.map(|(id, _)| *id)
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
@@ -737,12 +737,10 @@ mod glow_integration {
|
|||||||
|
|
||||||
let viewport = self
|
let viewport = self
|
||||||
.viewports
|
.viewports
|
||||||
.get(&viewport_id)
|
.get_mut(&viewport_id)
|
||||||
.cloned()
|
|
||||||
.expect("viewport doesn't exist");
|
.expect("viewport doesn't exist");
|
||||||
|
|
||||||
let builder = &self.builders[&viewport.borrow().id_pair.this];
|
let builder = &self.builders[&viewport.id_pair.this];
|
||||||
let mut viewport = viewport.borrow_mut();
|
|
||||||
// make sure we have a window or create one.
|
// make sure we have a window or create one.
|
||||||
let window = viewport.window.take().unwrap_or_else(|| {
|
let window = viewport.window.take().unwrap_or_else(|| {
|
||||||
log::debug!("window doesn't exist yet. creating one now with finalize_window");
|
log::debug!("window doesn't exist yet. creating one now with finalize_window");
|
||||||
@@ -815,10 +813,9 @@ mod glow_integration {
|
|||||||
/// only applies for android. but we basically drop surface + window and make context not current
|
/// only applies for android. but we basically drop surface + window and make context not current
|
||||||
fn on_suspend(&mut self) -> Result<()> {
|
fn on_suspend(&mut self) -> Result<()> {
|
||||||
log::debug!("received suspend event. dropping window and surface");
|
log::debug!("received suspend event. dropping window and surface");
|
||||||
for viewport in self.viewports.values() {
|
for viewport in self.viewports.values_mut() {
|
||||||
let mut viewport = viewport.borrow_mut();
|
viewport.gl_surface = None;
|
||||||
viewport.gl_surface.take();
|
viewport.window = None;
|
||||||
viewport.window.take();
|
|
||||||
}
|
}
|
||||||
if let Some(current) = self.current_gl_context.take() {
|
if let Some(current) = self.current_gl_context.take() {
|
||||||
log::debug!("context is current, so making it non-current");
|
log::debug!("context is current, so making it non-current");
|
||||||
@@ -829,16 +826,20 @@ mod glow_integration {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn viewport(&self, viewport_id: ViewportId) -> Rc<RefCell<Viewport>> {
|
fn viewport(&self, viewport_id: ViewportId) -> &Viewport {
|
||||||
self.viewports
|
self.viewports
|
||||||
.get(&viewport_id)
|
.get(&viewport_id)
|
||||||
.cloned()
|
.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")
|
.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)
|
||||||
.borrow()
|
|
||||||
.window
|
.window
|
||||||
.clone()
|
.clone()
|
||||||
.expect("winit window doesn't exist")
|
.expect("winit window doesn't exist")
|
||||||
@@ -853,7 +854,6 @@ mod glow_integration {
|
|||||||
let height_px = std::num::NonZeroU32::new(physical_size.height.at_least(1)).unwrap();
|
let height_px = std::num::NonZeroU32::new(physical_size.height.at_least(1)).unwrap();
|
||||||
|
|
||||||
if let Some(viewport) = self.viewports.get(&viewport_id) {
|
if let Some(viewport) = self.viewports.get(&viewport_id) {
|
||||||
let viewport = viewport.borrow();
|
|
||||||
if let Some(gl_surface) = &viewport.gl_surface {
|
if let Some(gl_surface) = &viewport.gl_surface {
|
||||||
self.current_gl_context = Some(
|
self.current_gl_context = Some(
|
||||||
self.current_gl_context
|
self.current_gl_context
|
||||||
@@ -879,20 +879,6 @@ mod glow_integration {
|
|||||||
self.gl_config.display().get_proc_address(addr)
|
self.gl_config.display().get_proc_address(addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn make_viewport_current(&mut self, viewport: &Viewport) {
|
|
||||||
if let Some(gl_surface) = &viewport.gl_surface {
|
|
||||||
self.current_gl_context = Some(
|
|
||||||
self.current_gl_context
|
|
||||||
.take()
|
|
||||||
.unwrap()
|
|
||||||
.make_not_current()
|
|
||||||
.unwrap()
|
|
||||||
.make_current(gl_surface)
|
|
||||||
.unwrap(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn process_viewport_builders(&mut self, mut viewports: Vec<ViewportOutput>) {
|
fn process_viewport_builders(&mut self, mut viewports: Vec<ViewportOutput>) {
|
||||||
let mut active_viewports_ids = ViewportIdSet::default();
|
let mut active_viewports_ids = ViewportIdSet::default();
|
||||||
active_viewports_ids.insert(ViewportId::ROOT);
|
active_viewports_ids.insert(ViewportId::ROOT);
|
||||||
@@ -909,9 +895,7 @@ mod glow_integration {
|
|||||||
.entry(id_pair.this)
|
.entry(id_pair.this)
|
||||||
.or_insert(new_builder.clone());
|
.or_insert(new_builder.clone());
|
||||||
let (commands, recreate) = builder.patch(new_builder);
|
let (commands, recreate) = builder.patch(new_builder);
|
||||||
if let Some(viewport) = self.viewports.get(&id_pair.this) {
|
if let Some(viewport) = self.viewports.get_mut(&id_pair.this) {
|
||||||
let mut viewport = viewport.borrow_mut();
|
|
||||||
|
|
||||||
viewport.id_pair.parent = id_pair.parent;
|
viewport.id_pair.parent = id_pair.parent;
|
||||||
viewport.viewport_ui_cb = viewport_ui_cb.clone(); // always update the latest callback
|
viewport.viewport_ui_cb = viewport_ui_cb.clone(); // always update the latest callback
|
||||||
|
|
||||||
@@ -947,13 +931,13 @@ mod glow_integration {
|
|||||||
{
|
{
|
||||||
self.viewports.insert(
|
self.viewports.insert(
|
||||||
id_pair.this,
|
id_pair.this,
|
||||||
Rc::new(RefCell::new(Viewport {
|
Viewport {
|
||||||
gl_surface: None,
|
gl_surface: None,
|
||||||
window: None,
|
window: None,
|
||||||
egui_winit: None,
|
egui_winit: None,
|
||||||
viewport_ui_cb,
|
viewport_ui_cb,
|
||||||
id_pair,
|
id_pair,
|
||||||
})),
|
},
|
||||||
);
|
);
|
||||||
self.builders.insert(id_pair.this, builder);
|
self.builders.insert(id_pair.this, builder);
|
||||||
}
|
}
|
||||||
@@ -1026,7 +1010,6 @@ mod glow_integration {
|
|||||||
glutin_window_context.on_resume(event_loop)?;
|
glutin_window_context.on_resume(event_loop)?;
|
||||||
|
|
||||||
if let Some(viewport) = glutin_window_context.viewports.get(&ViewportId::ROOT) {
|
if let Some(viewport) = glutin_window_context.viewports.get(&ViewportId::ROOT) {
|
||||||
let viewport = viewport.borrow();
|
|
||||||
if let Some(window) = &viewport.window {
|
if let Some(window) = &viewport.window {
|
||||||
epi_integration::apply_native_options_to_window(
|
epi_integration::apply_native_options_to_window(
|
||||||
window,
|
window,
|
||||||
@@ -1072,8 +1055,8 @@ mod glow_integration {
|
|||||||
|
|
||||||
let max_texture_side = painter.max_texture_side();
|
let max_texture_side = painter.max_texture_side();
|
||||||
glutin_ctx.max_texture_side = Some(max_texture_side);
|
glutin_ctx.max_texture_side = Some(max_texture_side);
|
||||||
for viewport in glutin_ctx.viewports.values() {
|
for viewport in glutin_ctx.viewports.values_mut() {
|
||||||
if let Some(egui_winit) = viewport.borrow_mut().egui_winit.as_mut() {
|
if let Some(egui_winit) = viewport.egui_winit.as_mut() {
|
||||||
egui_winit.set_max_texture_side(max_texture_side);
|
egui_winit.set_max_texture_side(max_texture_side);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1114,12 +1097,12 @@ mod glow_integration {
|
|||||||
#[cfg(feature = "accesskit")]
|
#[cfg(feature = "accesskit")]
|
||||||
{
|
{
|
||||||
let event_loop_proxy = self.repaint_proxy.lock().clone();
|
let event_loop_proxy = self.repaint_proxy.lock().clone();
|
||||||
let viewport = &glutin_ctx.viewports[&ViewportId::ROOT];
|
let viewport = glutin_ctx.viewports.get_mut(&ViewportId::ROOT).unwrap();
|
||||||
if let Viewport {
|
if let Viewport {
|
||||||
window: Some(window),
|
window: Some(window),
|
||||||
egui_winit: Some(egui_winit),
|
egui_winit: Some(egui_winit),
|
||||||
..
|
..
|
||||||
} = &mut *viewport.borrow_mut()
|
} = viewport
|
||||||
{
|
{
|
||||||
integration.init_accesskit(egui_winit, window, event_loop_proxy);
|
integration.init_accesskit(egui_winit, window, event_loop_proxy);
|
||||||
}
|
}
|
||||||
@@ -1153,8 +1136,7 @@ mod glow_integration {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if app.warm_up_enabled() {
|
if app.warm_up_enabled() {
|
||||||
let viewport = glutin_ctx.viewport(ViewportId::ROOT);
|
let viewport = glutin_ctx.viewport_mut(ViewportId::ROOT);
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
|
||||||
integration.warm_up(
|
integration.warm_up(
|
||||||
app.as_mut(),
|
app.as_mut(),
|
||||||
&window,
|
&window,
|
||||||
@@ -1251,7 +1233,7 @@ mod glow_integration {
|
|||||||
glutin
|
glutin
|
||||||
.viewports
|
.viewports
|
||||||
.entry(id_pair.this)
|
.entry(id_pair.this)
|
||||||
.or_insert(Rc::new(RefCell::new(Viewport::new(id_pair))));
|
.or_insert(Viewport::new(id_pair));
|
||||||
|
|
||||||
glutin
|
glutin
|
||||||
.builders
|
.builders
|
||||||
@@ -1264,13 +1246,12 @@ mod glow_integration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let input = {
|
let input = {
|
||||||
let glutin = glutin.borrow_mut();
|
let mut glutin = glutin.borrow_mut();
|
||||||
|
|
||||||
let Some(viewport) = glutin.viewports.get(&id_pair.this) else {
|
let Some(viewport) = glutin.viewports.get_mut(&id_pair.this) else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
|
||||||
let Some(winit_state) = &mut viewport.egui_winit else {
|
let Some(winit_state) = &mut viewport.egui_winit else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
@@ -1302,11 +1283,10 @@ mod glow_integration {
|
|||||||
..
|
..
|
||||||
} = &mut *glutin;
|
} = &mut *glutin;
|
||||||
|
|
||||||
let Some(viewport) = viewports.get(&id_pair.this) else {
|
let Some(viewport) = viewports.get_mut(&id_pair.this) else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
|
||||||
let Some(winit_state) = &mut viewport.egui_winit else {
|
let Some(winit_state) = &mut viewport.egui_winit else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
@@ -1396,7 +1376,7 @@ mod glow_integration {
|
|||||||
let glutin_ctx = running.glutin_ctx.borrow();
|
let glutin_ctx = running.glutin_ctx.borrow();
|
||||||
let viewport_id = *glutin_ctx.viewport_maps.get(&window_id)?;
|
let viewport_id = *glutin_ctx.viewport_maps.get(&window_id)?;
|
||||||
if let Some(viewport) = glutin_ctx.viewports.get(&viewport_id) {
|
if let Some(viewport) = glutin_ctx.viewports.get(&viewport_id) {
|
||||||
viewport.borrow().window.clone()
|
viewport.window.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@@ -1455,10 +1435,10 @@ mod glow_integration {
|
|||||||
// That means that the viewport cannot be rendered by itself and needs his parent to be rendered
|
// That means that the viewport cannot be rendered by itself and needs his parent to be rendered
|
||||||
{
|
{
|
||||||
let glutin = glutin.borrow();
|
let glutin = glutin.borrow();
|
||||||
let viewport = glutin.viewports[&viewport_id].borrow();
|
let viewport = &glutin.viewports[&viewport_id];
|
||||||
if viewport.viewport_ui_cb.is_none() && viewport_id != ViewportId::ROOT {
|
if viewport.viewport_ui_cb.is_none() && viewport_id != ViewportId::ROOT {
|
||||||
if let Some(parent_viewport) = glutin.viewports.get(&viewport.id_pair.parent) {
|
if let Some(parent_viewport) = glutin.viewports.get(&viewport.id_pair.parent) {
|
||||||
if let Some(window) = parent_viewport.borrow().window.as_ref() {
|
if let Some(window) = parent_viewport.window.as_ref() {
|
||||||
return EventResult::RepaintNext(window.id());
|
return EventResult::RepaintNext(window.id());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1470,24 +1450,21 @@ mod glow_integration {
|
|||||||
platform_output,
|
platform_output,
|
||||||
textures_delta,
|
textures_delta,
|
||||||
shapes,
|
shapes,
|
||||||
viewports,
|
viewports: viewports_out,
|
||||||
viewport_commands,
|
viewport_commands,
|
||||||
};
|
};
|
||||||
|
|
||||||
let control_flow;
|
let control_flow;
|
||||||
{
|
{
|
||||||
let viewport = glutin.borrow().viewport(viewport_id);
|
|
||||||
let window = glutin.borrow().window(viewport_id);
|
|
||||||
|
|
||||||
let screen_size_in_pixels: [u32; 2] = window.inner_size().into();
|
|
||||||
|
|
||||||
let (raw_input, viewport_ui_cb) = {
|
let (raw_input, viewport_ui_cb) = {
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
let mut glutin = glutin.borrow_mut();
|
||||||
|
let viewport = glutin.viewports.get_mut(&viewport_id).unwrap();
|
||||||
|
let window = viewport.window.as_ref().unwrap();
|
||||||
|
|
||||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
||||||
let raw_input = egui_winit.take_egui_input(&window, viewport.id_pair);
|
let raw_input = egui_winit.take_egui_input(window, viewport.id_pair);
|
||||||
|
|
||||||
integration.pre_update(&window);
|
integration.pre_update(window);
|
||||||
|
|
||||||
(raw_input, viewport.viewport_ui_cb.clone())
|
(raw_input, viewport.viewport_ui_cb.clone())
|
||||||
};
|
};
|
||||||
@@ -1503,29 +1480,44 @@ mod glow_integration {
|
|||||||
platform_output,
|
platform_output,
|
||||||
textures_delta,
|
textures_delta,
|
||||||
shapes,
|
shapes,
|
||||||
viewports,
|
viewports: viewports_out,
|
||||||
viewport_commands,
|
viewport_commands,
|
||||||
} = full_output;
|
} = full_output;
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
{
|
let mut glutin = glutin.borrow_mut();
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
let GlutinWindowContext {
|
||||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
viewports,
|
||||||
integration.post_update(app.as_mut(), &window);
|
current_gl_context,
|
||||||
integration.handle_platform_output(
|
..
|
||||||
&window,
|
} = &mut *glutin;
|
||||||
viewport_id,
|
let viewport = viewports.get_mut(&viewport_id).unwrap();
|
||||||
platform_output,
|
let window = viewport.window.as_ref().unwrap();
|
||||||
egui_winit,
|
|
||||||
);
|
integration.post_update(app.as_mut(), window);
|
||||||
}
|
integration.handle_platform_output(
|
||||||
|
window,
|
||||||
|
viewport_id,
|
||||||
|
platform_output,
|
||||||
|
viewport.egui_winit.as_mut().unwrap(),
|
||||||
|
);
|
||||||
|
|
||||||
let clipped_primitives = integration.egui_ctx.tessellate(shapes);
|
let clipped_primitives = integration.egui_ctx.tessellate(shapes);
|
||||||
|
|
||||||
glutin
|
if let Some(gl_surface) = &viewport.gl_surface {
|
||||||
.borrow_mut()
|
*current_gl_context = Some(
|
||||||
.make_viewport_current(&viewport.borrow());
|
current_gl_context
|
||||||
|
.take()
|
||||||
|
.unwrap()
|
||||||
|
.make_not_current()
|
||||||
|
.unwrap()
|
||||||
|
.make_current(gl_surface)
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let screen_size_in_pixels: [u32; 2] = window.inner_size().into();
|
||||||
|
|
||||||
egui_glow::painter::clear(
|
egui_glow::painter::clear(
|
||||||
&gl,
|
&gl,
|
||||||
@@ -1553,21 +1545,17 @@ mod glow_integration {
|
|||||||
integration.frame.screenshot.set(Some(screenshot));
|
integration.frame.screenshot.set(Some(screenshot));
|
||||||
}
|
}
|
||||||
|
|
||||||
integration
|
integration.post_rendering(app.as_mut(), viewport.window.as_ref().unwrap());
|
||||||
.post_rendering(app.as_mut(), viewport.borrow().window.as_ref().unwrap());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
crate::profile_scope!("swap_buffers");
|
crate::profile_scope!("swap_buffers");
|
||||||
if let Err(err) = viewport
|
if let Err(err) = viewport
|
||||||
.borrow()
|
|
||||||
.gl_surface
|
.gl_surface
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.expect("failed to get surface to swap buffers")
|
.expect("failed to get surface to swap buffers")
|
||||||
.swap_buffers(
|
.swap_buffers(
|
||||||
glutin
|
current_gl_context
|
||||||
.borrow()
|
|
||||||
.current_gl_context
|
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.expect("failed to get current context to swap buffers"),
|
.expect("failed to get current context to swap buffers"),
|
||||||
)
|
)
|
||||||
@@ -1576,7 +1564,7 @@ mod glow_integration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
integration.post_present(viewport.borrow().window.as_ref().unwrap());
|
integration.post_present(viewport.window.as_ref().unwrap());
|
||||||
|
|
||||||
// give it time to settle:
|
// give it time to settle:
|
||||||
#[cfg(feature = "__screenshot")]
|
#[cfg(feature = "__screenshot")]
|
||||||
@@ -1608,7 +1596,7 @@ mod glow_integration {
|
|||||||
EventResult::Wait
|
EventResult::Wait
|
||||||
};
|
};
|
||||||
|
|
||||||
integration.maybe_autosave(app.as_mut(), Some(&window));
|
integration.maybe_autosave(app.as_mut(), Some(window));
|
||||||
|
|
||||||
if window.is_minimized() == Some(true) {
|
if window.is_minimized() == Some(true) {
|
||||||
// On Mac, a minimized Window uses up all CPU:
|
// On Mac, a minimized Window uses up all CPU:
|
||||||
@@ -1618,11 +1606,11 @@ mod glow_integration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glutin.borrow_mut().process_viewport_builders(viewports);
|
glutin.borrow_mut().process_viewport_builders(viewports_out);
|
||||||
|
|
||||||
for (viewport_id, command) in viewport_commands {
|
for (viewport_id, command) in viewport_commands {
|
||||||
if let Some(viewport) = glutin.borrow().viewports.get(&viewport_id) {
|
if let Some(viewport) = glutin.borrow().viewports.get(&viewport_id) {
|
||||||
if let Some(window) = &viewport.borrow().window {
|
if let Some(window) = &viewport.window {
|
||||||
let is_viewport_focused = self.focused_viewport == Some(viewport_id);
|
let is_viewport_focused = self.focused_viewport == Some(viewport_id);
|
||||||
egui_winit::process_viewport_commands(
|
egui_winit::process_viewport_commands(
|
||||||
std::iter::once(command),
|
std::iter::once(command),
|
||||||
@@ -1760,12 +1748,10 @@ mod glow_integration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let event_response = 'res: {
|
let event_response = 'res: {
|
||||||
let glutin = running.glutin_ctx.borrow();
|
let mut glutin = running.glutin_ctx.borrow_mut();
|
||||||
if let Some(viewport_id) = glutin.viewport_maps.get(window_id).copied()
|
if let Some(viewport_id) = glutin.viewport_maps.get(window_id).copied()
|
||||||
{
|
{
|
||||||
if let Some(viewport) = &glutin.viewports.get(&viewport_id) {
|
if let Some(viewport) = glutin.viewports.get_mut(&viewport_id) {
|
||||||
let viewport = &mut *viewport.borrow_mut();
|
|
||||||
|
|
||||||
break 'res running.integration.on_event(
|
break 'res running.integration.on_event(
|
||||||
running.app.as_mut(),
|
running.app.as_mut(),
|
||||||
event,
|
event,
|
||||||
@@ -1804,10 +1790,9 @@ mod glow_integration {
|
|||||||
if let Some(running) = self.running.as_ref() {
|
if let Some(running) = self.running.as_ref() {
|
||||||
crate::profile_scope!("on_accesskit_action_request");
|
crate::profile_scope!("on_accesskit_action_request");
|
||||||
|
|
||||||
let glutin = running.glutin_ctx.borrow();
|
let mut glutin = running.glutin_ctx.borrow_mut();
|
||||||
if let Some(viewport_id) = glutin.viewport_maps.get(window_id).copied() {
|
if let Some(viewport_id) = glutin.viewport_maps.get(window_id).copied() {
|
||||||
if let Some(viewport) = &glutin.viewports.get(&viewport_id) {
|
if let Some(viewport) = glutin.viewports.get_mut(&viewport_id) {
|
||||||
let mut viewport = viewport.borrow_mut();
|
|
||||||
viewport
|
viewport
|
||||||
.egui_winit
|
.egui_winit
|
||||||
.as_mut()
|
.as_mut()
|
||||||
|
|||||||
Reference in New Issue
Block a user