mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2025-12-20 04:40:07 +01:00
paint-node: Consider view-alpha for is_fully_opaque
In order to be more in line with weston_view_is_opaque() - which we use in most cases to set the value - and ensure the expectations of existing places in the code are honored, see usages in both draw_paint_node() implementations. An exception here are holes - these always need to get painted as fully opaque in the renderer path. Signed-off-by: Robert Mader <robert.mader@collabora.com>
This commit is contained in:
parent
c2b60e6651
commit
e9fc189189
3 changed files with 8 additions and 8 deletions
|
|
@ -230,7 +230,8 @@ paint_node_update_early(struct weston_paint_node *pnode)
|
|||
pnode->censored = false;
|
||||
if (buffer->type == WESTON_BUFFER_SOLID) {
|
||||
pnode->draw_solid = true;
|
||||
pnode->is_fully_opaque = (buffer->solid.a == 1.0f);
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f &&
|
||||
buffer->solid.a == 1.0f);
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
pnode->solid = buffer->solid;
|
||||
if (pnode->solid.a == 0.0f)
|
||||
|
|
@ -254,8 +255,8 @@ paint_node_update_early(struct weston_paint_node *pnode)
|
|||
(recording_censor || unprotected_censor)) {
|
||||
pnode->draw_solid = true;
|
||||
pnode->censored = true;
|
||||
pnode->is_fully_opaque = true;
|
||||
pnode->is_fully_blended = false;
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f);
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
get_placeholder_color(pnode, &pnode->solid);
|
||||
}
|
||||
|
||||
|
|
@ -355,8 +356,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 = true;
|
||||
pnode->is_fully_blended = false;
|
||||
pnode->is_fully_opaque = (pnode->view->alpha == 1.0f);
|
||||
pnode->is_fully_blended = !pnode->is_fully_opaque;
|
||||
get_placeholder_color(pnode, &pnode->solid);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2076,8 +2076,8 @@ draw_paint_node(struct weston_paint_node *pnode,
|
|||
}
|
||||
|
||||
if (!gr->debug_mode && pnode->draw_solid && pnode->is_fully_opaque &&
|
||||
pnode->view->alpha == 1.0f && pnode->valid_transform &&
|
||||
(pnode->surf_xform_valid && !pnode->surf_xform.transform)) {
|
||||
pnode->valid_transform && (pnode->surf_xform_valid &&
|
||||
!pnode->surf_xform.transform)) {
|
||||
clear_region(gr, pnode, &repaint);
|
||||
gs->used_in_output_repaint = true;
|
||||
goto out;
|
||||
|
|
|
|||
|
|
@ -1804,7 +1804,6 @@ draw_paint_node(struct weston_paint_node *pnode,
|
|||
image_view, sampler,
|
||||
&vb->descriptor_set);
|
||||
|
||||
/* XXX: Should we be using ev->transform.opaque here? */
|
||||
if (pnode->is_fully_opaque) {
|
||||
pixman_region32_init_rect(&surface_opaque, 0, 0,
|
||||
pnode->surface->width,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue