On Wed, 20 Dec 2017 12:26:48 +0000
Daniel Stone <[email protected]> wrote:

> Make it a bit more clear what the purpose of the variable is.
> 
> Signed-off-by: Daniel Stone <[email protected]>
> ---
>  libweston/compositor-drm.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
> index 19aeb5326..3ff06c01c 100644
> --- a/libweston/compositor-drm.c
> +++ b/libweston/compositor-drm.c
> @@ -3059,7 +3059,7 @@ drm_assign_planes(struct weston_output *output_base, 
> void *repaint_data)
>       struct drm_output_state *state;
>       struct drm_plane_state *plane_state;
>       struct weston_view *ev;
> -     pixman_region32_t overlap, surface_overlap;
> +     pixman_region32_t surface_overlap, renderer_region;
>       struct weston_plane *primary, *next_plane;
>  
>       assert(!output->state_last);
> @@ -3080,7 +3080,7 @@ drm_assign_planes(struct weston_output *output_base, 
> void *repaint_data)
>        * the client buffer can be used directly for the sprite surface
>        * as we do for flipping full screen surfaces.
>        */
> -     pixman_region32_init(&overlap);
> +     pixman_region32_init(&renderer_region);
>       primary = &output_base->compositor->primary_plane;
>  
>       wl_list_for_each(ev, &output_base->compositor->view_list, link) {
> @@ -3104,7 +3104,7 @@ drm_assign_planes(struct weston_output *output_base, 
> void *repaint_data)
>                       es->keep_buffer = false;
>  
>               pixman_region32_init(&surface_overlap);
> -             pixman_region32_intersect(&surface_overlap, &overlap,
> +             pixman_region32_intersect(&surface_overlap, &renderer_region,
>                                         &ev->transform.boundingbox);
>  
>               next_plane = NULL;
> @@ -3125,7 +3125,8 @@ drm_assign_planes(struct weston_output *output_base, 
> void *repaint_data)
>               weston_view_move_to_plane(ev, next_plane);
>  
>               if (next_plane == primary)
> -                     pixman_region32_union(&overlap, &overlap,
> +                     pixman_region32_union(&renderer_region,
> +                                           &renderer_region,
>                                             &ev->transform.boundingbox);
>  
>               if (next_plane == primary ||
> @@ -3142,7 +3143,7 @@ drm_assign_planes(struct weston_output *output_base, 
> void *repaint_data)
>  
>               pixman_region32_fini(&surface_overlap);
>       }
> -     pixman_region32_fini(&overlap);
> +     pixman_region32_fini(&renderer_region);
>  
>       /* We rely on output->cursor_view being both an accurate reflection of
>        * the cursor plane's state, but also being maintained across repaints

Hi,

let me see... renderer_region starts empty, and accumulates the area
from all views assigned to the primary plane for composition. Iterating
the view list from top to bottom, if a view may overlap with
renderer_region at that point, it cannot be promoted to an overlay
plane, because the primary plane already has something on top of it.

Reviewed-by: Pekka Paalanen <[email protected]>


Thanks,
pq

Attachment: pgpX835aJ7TwD.pgp
Description: OpenPGP digital signature

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to