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

commit7167dec85055da63f9ea4e760c53dd85c98e39bf
parent5cf03284fd
authorLucas Galante <[email protected]>
date2026-07-01 20:23
Fix wlr_scene damage tracking bugs when setting position/size/transform on nodes

 scenefx/types/scene/wlr_scene.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/scenefx/types/scene/wlr_scene.c b/scenefx/types/scene/wlr_scene.c
index dc8252b..5b9eabf 100644
--- a/scenefx/types/scene/wlr_scene.c
+++ b/scenefx/types/scene/wlr_scene.c
@@ -961,6 +961,7 @@ void wlr_scene_rect_set_size(struct wlr_scene_rect *rect, int width, int height)
 
 	assert(width >= 0 && height >= 0);
 
+	scene_node_update(&rect->node, NULL);
 	rect->width = width;
 	rect->height = height;
 	scene_node_update(&rect->node, NULL);
@@ -1640,6 +1641,7 @@ void wlr_scene_buffer_set_dest_size(struct wlr_scene_buffer *scene_buffer,
 	}
 
 	assert(width >= 0 && height >= 0);
+	scene_node_update(&scene_buffer->node, NULL);
 	scene_buffer->dst_width = width;
 	scene_buffer->dst_height = height;
 	scene_node_update(&scene_buffer->node, NULL);
@@ -1651,6 +1653,7 @@ void wlr_scene_buffer_set_transform(struct wlr_scene_buffer *scene_buffer,
 		return;
 	}
 
+	scene_node_update(&scene_buffer->node, NULL);
 	scene_buffer->transform = transform;
 	scene_node_update(&scene_buffer->node, NULL);
 }
@@ -1824,6 +1827,7 @@ void wlr_scene_node_set_position(struct wlr_scene_node *node, int x, int y) {
 		return;
 	}
 
+	scene_node_update(node, NULL);
 	node->x = x;
 	node->y = y;
 	scene_node_update(node, NULL);