mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-01 22:58:38 -04:00
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.
This commit is contained in:
parent
823a64bf7d
commit
66d96d244c
1 changed files with 6 additions and 8 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue