git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit6a021908a20156982cdbf8355989a6f54026fda6
parent28af0a9dde
authorLucas Galante <[email protected]>
date2026-06-30 16:17
Scale explicit blur bounds by output scale factor

 src/server/window.rs       | 9 +++++----
 src/server/xdg_toplevel.rs | 9 +++++----
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/server/window.rs b/src/server/window.rs
index c52c8b9..c363c6e 100644
--- a/src/server/window.rs
+++ b/src/server/window.rs
@@ -1539,10 +1539,11 @@ impl Window {
             if app_id.starts_with("cce-status") {
                 ignore_transparent = (*self.server).wm.layout.status_backdrop_blur_ignore_transparent;
             }
-            let geom_x = self.rendering_requested.x;
-            let geom_y = self.rendering_requested.y;
-            let geom_w = self.rendering_sent.width as i32;
-            let geom_h = self.rendering_sent.height as i32;
+            let scale = self.scale;
+            let geom_x = (self.rendering_requested.x as f64 * scale) as i32;
+            let geom_y = (self.rendering_requested.y as f64 * scale) as i32;
+            let geom_w = (self.rendering_sent.width as f64 * scale) as i32;
+            let geom_h = (self.rendering_sent.height as f64 * scale) as i32;
             ffi::river_scene_node_enable_blur(
                 self.surfaces.tree as *mut ffi::wlr_scene_node,
                 blur_enabled,
diff --git a/src/server/xdg_toplevel.rs b/src/server/xdg_toplevel.rs
index e6f8246..43bbe9b 100644
--- a/src/server/xdg_toplevel.rs
+++ b/src/server/xdg_toplevel.rs
@@ -413,10 +413,11 @@ unsafe extern "C" fn handle_commit(listener: *mut ffi::wl_listener, _data: *mut
     if app_id.starts_with("cce-status") {
         ignore_transparent = (*(*window).server).wm.layout.status_backdrop_blur_ignore_transparent;
     }
-    let geom_x = (*window).rendering_requested.x;
-    let geom_y = (*window).rendering_requested.y;
-    let geom_w = (*window).rendering_sent.width as i32;
-    let geom_h = (*window).rendering_sent.height as i32;
+    let scale = (*window).scale;
+    let geom_x = ((*window).rendering_requested.x as f64 * scale) as i32;
+    let geom_y = ((*window).rendering_requested.y as f64 * scale) as i32;
+    let geom_w = ((*window).rendering_sent.width as f64 * scale) as i32;
+    let geom_h = ((*window).rendering_sent.height as f64 * scale) as i32;
     ffi::river_scene_node_enable_blur(
         (*window).surfaces.tree as *mut ffi::wlr_scene_node,
         (*window).rendering_requested.blur,