mirror of
https://github.com/emilk/egui.git
synced 2026-06-27 15:13:12 -04:00
Fix crash on eframe wgpu when rendering a sync viewport in a sync viewport
Better names
This commit is contained in:
@@ -2177,7 +2177,7 @@ mod wgpu_integration {
|
||||
viewport_builder,
|
||||
pair,
|
||||
render,
|
||||
&mut viewports.borrow_mut(),
|
||||
&viewports,
|
||||
&builders,
|
||||
beginning,
|
||||
&painter,
|
||||
@@ -2209,14 +2209,14 @@ mod wgpu_integration {
|
||||
mut viewport_builder: ViewportBuilder,
|
||||
pair: ViewportIdPair,
|
||||
render: Box<dyn FnOnce(&egui::Context) + '_>,
|
||||
viewports: &mut Viewports,
|
||||
viewports: &RefCell<Viewports>,
|
||||
builders: &RefCell<HashMap<ViewportId, ViewportBuilder>>,
|
||||
time: Instant,
|
||||
painter: &RefCell<egui_wgpu::winit::Painter>,
|
||||
viewport_maps: &RefCell<HashMap<winit::window::WindowId, ViewportId>>,
|
||||
) {
|
||||
// Creating a new native window if is needed
|
||||
if viewports.get(&pair).is_none() {
|
||||
if viewports.borrow().get(&pair).is_none() {
|
||||
let mut builders = builders.borrow_mut();
|
||||
|
||||
{
|
||||
@@ -2226,6 +2226,8 @@ mod wgpu_integration {
|
||||
}
|
||||
}
|
||||
|
||||
let mut viewports = viewports.borrow_mut();
|
||||
|
||||
let Viewport { window, state, .. } =
|
||||
viewports.entry(pair.this).or_insert(Viewport {
|
||||
window: None,
|
||||
@@ -2259,12 +2261,12 @@ mod wgpu_integration {
|
||||
|
||||
// render sync viewport
|
||||
|
||||
let window = viewports.get(&pair).cloned();
|
||||
let Some(window) = window else { return };
|
||||
let viewport = viewports.borrow().get(&pair).cloned();
|
||||
let Some(viewport) = viewport else { return };
|
||||
let output;
|
||||
let Some(winit_state) = &mut *window.state.borrow_mut() else { return };
|
||||
let Some(win) = window.window else { return };
|
||||
let win = win.borrow();
|
||||
let Some(winit_state) = &mut *viewport.state.borrow_mut() else { return };
|
||||
let Some(window) = viewport.window else { return };
|
||||
let win = window.borrow();
|
||||
let mut input = winit_state.take_egui_input(&win);
|
||||
input.time = Some(time.elapsed().as_secs_f64());
|
||||
output = egui_ctx.run(input, pair, |ctx| {
|
||||
|
||||
Reference in New Issue
Block a user