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

Simplify render_immediate_viewport

This commit is contained in:
Emil Ernerfeldt
2023-11-14 06:47:09 +01:00
parent 4be66c057f
commit 67c192bfb3

View File

@@ -2146,9 +2146,8 @@ mod wgpu_integration {
viewport_maps, viewport_maps,
} = &mut *shared; } = &mut *shared;
// Creating a new native window if is needed
if !viewports.contains_key(&ids.this) {
if builder.icon.is_none() { if builder.icon.is_none() {
// Inherit icon from parent
builder.icon = viewports builder.icon = viewports
.get(&ids.parent) .get(&ids.parent)
.and_then(|vp| vp.builder.icon.clone()); .and_then(|vp| vp.builder.icon.clone());
@@ -2162,13 +2161,10 @@ mod wgpu_integration {
egui_winit: None, egui_winit: None,
}); });
if viewport.window.is_none() {
viewport.init_window(viewport_maps, painter, event_loop); viewport.init_window(viewport_maps, painter, event_loop);
} }
// Render sync viewport:
let Some(viewport) = viewports.get_mut(&ids.this) else {
return;
};
let Some(winit_state) = &mut viewport.egui_winit else { let Some(winit_state) = &mut viewport.egui_winit else {
return; return;
}; };
@@ -2756,6 +2752,7 @@ mod wgpu_integration {
match viewports.entry(ids.this) { match viewports.entry(ids.this) {
std::collections::hash_map::Entry::Vacant(entry) => { std::collections::hash_map::Entry::Vacant(entry) => {
// New viewport: // New viewport:
log::debug!("Creating new viewport {:?} ({:?})", ids.this, builder.title);
entry.insert(Viewport { entry.insert(Viewport {
ids, ids,
builder, builder,
@@ -2775,6 +2772,11 @@ mod wgpu_integration {
let (commands, recreate) = viewport.builder.patch(&builder); let (commands, recreate) = viewport.builder.patch(&builder);
if recreate { if recreate {
log::debug!(
"Recreating window for viewport {:?} ({:?})",
ids.this,
builder.title
);
viewport.window = None; viewport.window = None;
viewport.egui_winit = None; viewport.egui_winit = None;
} else if let Some(window) = &viewport.window { } else if let Some(window) = &viewport.window {