mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-07 03:48:02 +02:00
compositor: Fix rotated opaque surfaces
When a paint node is drawing rotated content, it's treated like its axis
aligned bounding box. Even if it only contains fully opaque content,
the parts of the axis aligned bounding box outside of that content
are not opaque.
We need to ensure we don't claim a paint node that isn't axis aligned
is fully opaque, or we'll improperly update regions outside of the
really opaque content.
Fixes 485e1796af
Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
This commit is contained in:
parent
bec568f002
commit
1f7bdea5c4
1 changed files with 8 additions and 4 deletions
|
|
@ -231,7 +231,8 @@ paint_node_update_early(struct weston_paint_node *pnode)
|
|||
if (buffer->type == WESTON_BUFFER_SOLID) {
|
||||
pnode->draw_solid = true;
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f &&
|
||||
buffer->solid.a == 1.0f);
|
||||
buffer->solid.a == 1.0f &&
|
||||
pnode->valid_transform);
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
pnode->solid = buffer->solid;
|
||||
if (pnode->solid.a == 0.0f)
|
||||
|
|
@ -255,14 +256,16 @@ paint_node_update_early(struct weston_paint_node *pnode)
|
|||
(recording_censor || unprotected_censor)) {
|
||||
pnode->draw_solid = true;
|
||||
pnode->censored = true;
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f);
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f) &&
|
||||
pnode->valid_transform;
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
get_placeholder_color(pnode, &pnode->solid);
|
||||
}
|
||||
|
||||
if (!pnode->draw_solid && (was_solid || view_dirty)) {
|
||||
pnode->is_fully_opaque = weston_view_is_opaque(pnode->view,
|
||||
&pnode->view->transform.boundingbox);
|
||||
&pnode->view->transform.boundingbox) &&
|
||||
pnode->valid_transform;
|
||||
pnode->is_fully_blended = weston_view_is_fully_blended(pnode->view,
|
||||
&pnode->view->transform.boundingbox);
|
||||
}
|
||||
|
|
@ -369,7 +372,8 @@ paint_node_update_late(struct weston_paint_node *pnode)
|
|||
};
|
||||
} else if (buffer->direct_display && !pnode->censored) {
|
||||
pnode->draw_solid = true;
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f);
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f) &&
|
||||
pnode->valid_transform;
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
get_placeholder_color(pnode, &pnode->solid);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue