From 45c055696437a08e3989d9b91d9c617b84cc2bc3 Mon Sep 17 00:00:00 2001 From: bbb651 Date: Sun, 30 Mar 2025 14:26:04 +0300 Subject: [PATCH] Destroy `zxdg_toplevel_decoration_v1` object with toplevel This is a protocol violation and crashes dwl. On niri it causes the toplevel to "leak". --- src/server/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/mod.rs b/src/server/mod.rs index 0850e3f..c0ce7ca 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -216,7 +216,10 @@ impl SurfaceData { fn destroy_role(&mut self) { if let Some(role) = self.role.take() { match role { - SurfaceRole::Toplevel(Some(t)) => { + SurfaceRole::Toplevel(Some(mut t)) => { + if let Some(decoration) = t.decoration.take() { + decoration.destroy(); + } t.toplevel.destroy(); t.xdg.surface.destroy(); }