compositor: Fixes for the opaque region

is_fully_opaque notably applies to opaque single-pixel-buffer views
without opaque region. Using it should be purely an optimization.
The check for alpha in turn may fix bugs in certain conditions.

Signed-off-by: Robert Mader <robert.mader@collabora.com>
This commit is contained in:
Robert Mader 2025-10-21 11:57:30 +02:00
parent e8b2033d82
commit 485e1796af

View file

@ -3239,7 +3239,11 @@ paint_node_update_visible(struct weston_paint_node *pnode,
pixman_region32_subtract(&pnode->visible, &pnode->clipped_view,
opaque);
pixman_region32_union(opaque, opaque, &view->transform.opaque);
if (pnode->is_fully_opaque)
pixman_region32_union(opaque, opaque, &pnode->visible);
else if (view->alpha == 1.0)
pixman_region32_union(opaque, opaque, &view->transform.opaque);
}