wlr_scene: Ensure scene_node_update is updating entire node.

The old logic might not update the entire scene node when a node is
disabled. It would only consider the damage last time (the damage was
based on the visible region of the node).

It's important that we update the entire node region because xwayland
stacking will depend on this.
master
Alexander Orzechowski 4 months ago
parent 823a64bf7d
commit 66d96d244c

@ -540,13 +540,8 @@ static void scene_node_update(struct wlr_scene_node *node,
struct wlr_scene *scene = scene_node_get_root(node); struct wlr_scene *scene = scene_node_get_root(node);
int x, y; int x, y;
if (!wlr_scene_node_coords(node, &x, &y)) { bool enabled = wlr_scene_node_coords(node, &x, &y);
if (damage) { if (!enabled && !damage) {
scene_update_region(scene, damage);
scene_damage_outputs(scene, damage);
pixman_region32_fini(damage);
}
return; return;
} }
@ -565,7 +560,10 @@ static void scene_node_update(struct wlr_scene_node *node,
scene_update_region(scene, &update_region); scene_update_region(scene, &update_region);
pixman_region32_fini(&update_region); pixman_region32_fini(&update_region);
if (enabled) {
scene_node_visibility(node, damage); scene_node_visibility(node, damage);
}
scene_damage_outputs(scene, damage); scene_damage_outputs(scene, damage);
pixman_region32_fini(damage); pixman_region32_fini(damage);
} }

Loading…
Cancel
Save