diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 086bb8ca..a2da3372 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -1133,6 +1133,7 @@ async fn run_instance
( }, cursor, ); + platform_specific_handler.clear_subsurface_list(); draw_span.finish(); if let user_interface::State::Updated { diff --git a/winit/src/platform_specific/mod.rs b/winit/src/platform_specific/mod.rs index 7969c203..ef65b2c5 100644 --- a/winit/src/platform_specific/mod.rs +++ b/winit/src/platform_specific/mod.rs @@ -72,6 +72,13 @@ impl PlatformSpecific { } } + pub(crate) fn clear_subsurface_list(&mut self) { + #[cfg(all(feature = "wayland", target_os = "linux"))] + { + self.wayland.clear_subsurface_list(); + } + } + pub(crate) fn update_subsurfaces( &mut self, id: window::Id, diff --git a/winit/src/platform_specific/wayland/mod.rs b/winit/src/platform_specific/wayland/mod.rs index 81c4c0ad..ad65b52a 100644 --- a/winit/src/platform_specific/wayland/mod.rs +++ b/winit/src/platform_specific/wayland/mod.rs @@ -181,6 +181,10 @@ impl WaylandSpecific { }; } + pub(crate) fn clear_subsurface_list(&mut self) { + let _ = crate::subsurface_widget::take_subsurfaces(); + } + pub(crate) fn update_subsurfaces( &mut self, id: window::Id,