mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-11-21 14:42:25 +00: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
@ -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…
Reference in New Issue
Block a user