diff --git a/crates/eframe/src/native/run.rs b/crates/eframe/src/native/run.rs index 70d542d13..f2fff410b 100644 --- a/crates/eframe/src/native/run.rs +++ b/crates/eframe/src/native/run.rs @@ -1909,6 +1909,7 @@ mod wgpu_integration { windows.retain(|id, _| active_viewports_ids.contains(id)); windows_id.retain(|_, id| active_viewports_ids.contains(id)); + painter.clean_surfaces(active_viewports_ids); let mut control_flow = vec![EventResult::Wait]; for repaint_after in repaint_after { diff --git a/crates/egui-wgpu/src/winit.rs b/crates/egui-wgpu/src/winit.rs index a41fdf4c7..00b2a6bf0 100644 --- a/crates/egui-wgpu/src/winit.rs +++ b/crates/egui-wgpu/src/winit.rs @@ -615,6 +615,11 @@ impl Painter { screenshot } + pub fn clean_surfaces(&mut self, avalibile_viewports: Vec) { + self.surfaces + .retain(|id, _| avalibile_viewports.contains(id)) + } + #[allow(clippy::unused_self)] pub fn destroy(&mut self) { // TODO(emilk): something here?