libweston: Don't set VISIBILITY_DIRTY on non-primary planes

VISIBILITY_DIRTY is used to apply damage to the plane, but that doesn't
make sense for non-primary planes.

For example, we don't want moving the cursor to result in damage being
registered on the cursor plane.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
This commit is contained in:
Derek Foreman 2023-11-03 10:31:07 -05:00
parent 79212ba9ad
commit 0def955a48

View File

@ -119,9 +119,18 @@ weston_view_dirty_paint_nodes(struct weston_view *view)
wl_list_for_each(node, &view->paint_node_list, view_link) {
assert(node->surface == view->surface);
node->status |= PAINT_NODE_VIEW_DIRTY;
node->status |= PAINT_NODE_VIEW_DIRTY |
PAINT_NODE_VISIBILITY_DIRTY;
/* We currently only place single surfaces on non-primary
* planes, and those planes are positioned within the
* scene graph based on geometry.
*
* That means we don't have to propagate damage to the
* plane for visibility changes, so don't set that
* bit here.
*/
if (node->plane == &node->output->primary_plane)
node->status |= PAINT_NODE_VISIBILITY_DIRTY;
}
}