From e59b9c10b5c3d7a09c3c01270442bb9107edc0b9 Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Sat, 8 Nov 2025 20:10:11 +0800 Subject: [PATCH] opt: optimize shadow node and blur node enable --- src/animation/client.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/animation/client.h b/src/animation/client.h index 3792358..70da39e 100644 --- a/src/animation/client.h +++ b/src/animation/client.h @@ -259,8 +259,12 @@ void client_draw_shadow(Client *c) { return; if (!shadows || (!c->isfloating && shadow_only_floating)) { - wlr_scene_shadow_set_size(c->shadow, 0, 0); + if (c->shadow->node.enabled) + wlr_scene_node_set_enabled(&c->shadow->node, false); return; + } else { + if (c->scene_surface->node.enabled && !c->shadow->node.enabled) + wlr_scene_node_set_enabled(&c->shadow->node, true); } bool hit_no_border = check_hit_no_border(c); @@ -351,9 +355,14 @@ void client_draw_shadow(Client *c) { void client_draw_blur(Client *c, struct wlr_box clip_box, struct ivec2 offset) { if (blur && !c->noblur) { + if (c->scene_surface->node.enabled && !c->blur->node.enabled) + wlr_scene_node_set_enabled(&c->blur->node, true); wlr_scene_node_set_position(&c->blur->node, offset.x, offset.y); wlr_scene_blur_set_size(c->blur, clip_box.width - c->bw, clip_box.height - c->bw); + } else { + if (c->blur->node.enabled) + wlr_scene_node_set_enabled(&c->blur->node, false); } }