From 3e9d7b17a290e8d6420b2eb7a7b18d6b21cb05d0 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 26 Jul 2024 09:58:02 +0200 Subject: [PATCH] Workaround for wgpu crash when surface is dropped last --- crates/egui-wgpu/src/winit.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/egui-wgpu/src/winit.rs b/crates/egui-wgpu/src/winit.rs index 46db8821e02..f0644ee1527 100644 --- a/crates/egui-wgpu/src/winit.rs +++ b/crates/egui-wgpu/src/winit.rs @@ -96,6 +96,17 @@ pub struct Painter { surfaces: ViewportIdMap, } +impl Drop for Painter { + fn drop(&mut self) { + // Drop surfaces before dropping the render state. + // + // This is a workaround for a bug in wgpu 22.0.0. + // Fixed in https://github.com/gfx-rs/wgpu/pull/6052 + // Remove with wgpu 22.1.0 update! + self.surfaces.clear(); + } +} + impl Painter { /// Manages [`wgpu`] state, including surface state, required to render egui. ///