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

commit5135d8b035d6fb4893585feea8129ee60fff2f6d
parent7167dec850
authorLucas Galante <[email protected]>
date2026-07-01 20:27
Exclude rect nodes with active fade_inset from opaque region and black opaque optimization checks

 scenefx/types/scene/wlr_scene.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scenefx/types/scene/wlr_scene.c b/scenefx/types/scene/wlr_scene.c
index 5b9eabf..ef17f4a 100644
--- a/scenefx/types/scene/wlr_scene.c
+++ b/scenefx/types/scene/wlr_scene.c
@@ -334,7 +334,7 @@ static void scene_node_opaque_region(struct wlr_scene_node *node, int x, int y,
 
 	if (node->type == WLR_SCENE_NODE_RECT) {
 		struct wlr_scene_rect *scene_rect = wlr_scene_rect_from_node(node);
-		if (scene_rect->color[3] != 1) {
+		if (scene_rect->color[3] != 1 || scene_rect->fade_inset > 0) {
 			return;
 		}
 
@@ -2681,6 +2681,7 @@ static bool scene_rect_is_black_opaque(struct wlr_scene_rect *scene_rect) {
 		scene_rect->color[1] == 0.f &&
 		scene_rect->color[2] == 0.f &&
 		scene_rect->color[3] == 1.f &&
+		scene_rect->fade_inset == 0 &&
 		fx_corner_radii_is_empty(&scene_rect->corners) &&
 		fx_corner_radii_is_empty(&scene_rect->clipped_region.corners) &&
 		wlr_box_empty(&scene_rect->clipped_region.area);