diff --git a/crates/eframe/src/native/run.rs b/crates/eframe/src/native/run.rs index e816eeac3..16a743968 100644 --- a/crates/eframe/src/native/run.rs +++ b/crates/eframe/src/native/run.rs @@ -2607,7 +2607,7 @@ mod wgpu_integration { viewport_maps .borrow_mut() .retain(|_, id| active_viewports_ids.contains(id)); - painter.borrow_mut().clean_surfaces(&active_viewports_ids); + painter.borrow_mut().gc_viewports(&active_viewports_ids); let Some( Viewport { diff --git a/crates/egui-wgpu/src/winit.rs b/crates/egui-wgpu/src/winit.rs index c1a40a5ee..e7252c00e 100644 --- a/crates/egui-wgpu/src/winit.rs +++ b/crates/egui-wgpu/src/winit.rs @@ -79,12 +79,14 @@ pub struct Painter { msaa_samples: u32, support_transparent_backbuffer: bool, depth_format: Option, - depth_texture_view: ViewportIdMap, - msaa_texture_view: ViewportIdMap, screen_capture_state: Option, instance: wgpu::Instance, render_state: Option, + + // Per viewport/window: + depth_texture_view: ViewportIdMap, + msaa_texture_view: ViewportIdMap, surfaces: ViewportIdMap, } @@ -120,11 +122,12 @@ impl Painter { msaa_samples, support_transparent_backbuffer, depth_format, - depth_texture_view: Default::default(), screen_capture_state: None, instance, render_state: None, + + depth_texture_view: Default::default(), surfaces: Default::default(), msaa_texture_view: Default::default(), } @@ -625,13 +628,12 @@ impl Painter { screenshot } - pub fn clean_surfaces(&mut self, available_viewports: &ViewportIdSet) { - self.surfaces - .retain(|id, _| available_viewports.contains(id)); + pub fn gc_viewports(&mut self, active_viewports: &ViewportIdSet) { + self.surfaces.retain(|id, _| active_viewports.contains(id)); self.depth_texture_view - .retain(|id, _| available_viewports.contains(id)); + .retain(|id, _| active_viewports.contains(id)); self.msaa_texture_view - .retain(|id, _| available_viewports.contains(id)); + .retain(|id, _| active_viewports.contains(id)); } #[allow(clippy::unused_self)]