From 377e742ce03458efc427814f746e18023a6d2926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20S=C3=A1lyi?= Date: Fri, 25 Apr 2025 18:53:29 +0200 Subject: [PATCH] Improve background layer destructor and decrease log level of its events --- src/wayland.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/wayland.rs b/src/wayland.rs index b333ad6..6542270 100644 --- a/src/wayland.rs +++ b/src/wayland.rs @@ -73,6 +73,17 @@ pub struct BackgroundLayer { dmabuf_feedback: Option, } +impl Drop for BackgroundLayer { + fn drop(&mut self) { + if let Some(dmabuf_feedback) = &self.dmabuf_feedback { + dmabuf_feedback.destroy(); + } + if let Some(viewport) = &self.viewport { + viewport.destroy(); + } + } +} + impl BackgroundLayer { pub fn draw_workspace_bg(&mut self, workspace_name: &str) { if !self.configured { @@ -151,7 +162,7 @@ impl Drop for Wallpaper { fn drop(&mut self) { if let Some(wl_buffer) = &self.wl_buffer { if self.active_count != 0 { - warn!("Destroying a {} times active wl_buffer of \ + debug!("Destroying a {} times active wl_buffer of \ wallpaper {:?}", self.active_count, self.canon_path); } wl_buffer.destroy(); @@ -262,7 +273,7 @@ impl DmabufHandler for State { bg_layer.dmabuf_feedback.as_ref() == Some(proxy) ) else { - error!("Received unexpected Linux DMA-BUF feedback"); + debug!("Received unexpected Linux DMA-BUF feedback"); return }; if let Err(e) = handle_dmabuf_feedback( @@ -914,7 +925,9 @@ fn fallback_shm_load_wallpapers( bg_layer_index: usize, ) { let bg_layer = &mut state.background_layers[bg_layer_index]; - bg_layer.dmabuf_feedback = None; + if let Some(dmabuf_feedback) = bg_layer.dmabuf_feedback.take() { + dmabuf_feedback.destroy(); + } bg_layer.workspace_backgrounds.clear(); load_wallpapers(state, qh, bg_layer_index, None); }