diff --git a/types/scene/wlr_scene.c b/types/scene/wlr_scene.c index 2e2c367e..dc1798d0 100644 --- a/types/scene/wlr_scene.c +++ b/types/scene/wlr_scene.c @@ -540,13 +540,8 @@ static void scene_node_update(struct wlr_scene_node *node, struct wlr_scene *scene = scene_node_get_root(node); int x, y; - if (!wlr_scene_node_coords(node, &x, &y)) { - if (damage) { - scene_update_region(scene, damage); - scene_damage_outputs(scene, damage); - pixman_region32_fini(damage); - } - + bool enabled = wlr_scene_node_coords(node, &x, &y); + if (!enabled && !damage) { return; } @@ -565,7 +560,10 @@ static void scene_node_update(struct wlr_scene_node *node, scene_update_region(scene, &update_region); pixman_region32_fini(&update_region); - scene_node_visibility(node, damage); + if (enabled) { + scene_node_visibility(node, damage); + } + scene_damage_outputs(scene, damage); pixman_region32_fini(damage); }