mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 14:20:04 -04:00
Simplify render_immediate_viewport
This commit is contained in:
@@ -2146,29 +2146,25 @@ mod wgpu_integration {
|
|||||||
viewport_maps,
|
viewport_maps,
|
||||||
} = &mut *shared;
|
} = &mut *shared;
|
||||||
|
|
||||||
// Creating a new native window if is needed
|
if builder.icon.is_none() {
|
||||||
if !viewports.contains_key(&ids.this) {
|
// Inherit icon from parent
|
||||||
if builder.icon.is_none() {
|
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());
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let viewport = viewports.entry(ids.this).or_insert(Viewport {
|
let viewport = viewports.entry(ids.this).or_insert(Viewport {
|
||||||
ids,
|
ids,
|
||||||
builder,
|
builder,
|
||||||
viewport_ui_cb: None,
|
viewport_ui_cb: None,
|
||||||
window: None,
|
window: None,
|
||||||
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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user