[PATCH weston 3/8] compositor: merge surface size from buffer size funcs

Jason Ekstrand jason at jlekstrand.net
Thu Nov 28 06:33:02 PST 2013


This one is also a good idea. Removes code duplication and keeps the
surface size calculations in compositor.c where they belong.
--Jason Ekstrand

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Nov 26, 2013 11:20 AM, "Jonny Lamb" <jonny.lamb at collabora.co.uk> wrote:

> From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
>
> Replace the two functions getting the intended surface dimensions from
> the surface's buffer and buffer transformation parameters by a single
> function that just set the surface size according to all the buffer
> state.
>
> The old functions were always called in pairs, and always assigned to
> the surface dimension variables.
>
> This function also deals with a NULL buffer by setting the dimensions to
> zero, just like the callers used to do.
>
> The new function has no users outside this source file, so do not export
> it. This basically unexports the old functions.
> ---
>  src/compositor.c | 52 +++++++++++++++++-----------------------------------
>  src/compositor.h |  4 ----
>  2 files changed, 17 insertions(+), 39 deletions(-)
>
> diff --git a/src/compositor.c b/src/compositor.c
> index b6f2966..bead369 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -1141,40 +1141,33 @@ weston_surface_is_mapped(struct weston_surface
> *surface)
>                 return 0;
>  }
>
> -WL_EXPORT int32_t
> -weston_surface_buffer_width(struct weston_surface *surface)
> +static void
> +weston_surface_set_size_from_buffer(struct weston_surface *surface)
>  {
> -       int32_t width;
> -       switch (surface->buffer_viewport.transform) {
> -       case WL_OUTPUT_TRANSFORM_90:
> -       case WL_OUTPUT_TRANSFORM_270:
> -       case WL_OUTPUT_TRANSFORM_FLIPPED_90:
> -       case WL_OUTPUT_TRANSFORM_FLIPPED_270:
> -               width = surface->buffer_ref.buffer->height;
> -                break;
> -       default:
> -               width = surface->buffer_ref.buffer->width;
> -                break;
> +       int32_t width, height;
> +
> +       if (!surface->buffer_ref.buffer) {
> +               surface->width = 0;
> +               surface->height = 0;
> +               return;
>         }
> -       return width / surface->buffer_viewport.scale;
> -}
>
> -WL_EXPORT int32_t
> -weston_surface_buffer_height(struct weston_surface *surface)
> -{
> -       int32_t height;
>         switch (surface->buffer_viewport.transform) {
>         case WL_OUTPUT_TRANSFORM_90:
>         case WL_OUTPUT_TRANSFORM_270:
>         case WL_OUTPUT_TRANSFORM_FLIPPED_90:
>         case WL_OUTPUT_TRANSFORM_FLIPPED_270:
> +               width = surface->buffer_ref.buffer->height;
>                 height = surface->buffer_ref.buffer->width;
> -                break;
> +               break;
>         default:
> +               width = surface->buffer_ref.buffer->width;
>                 height = surface->buffer_ref.buffer->height;
> -                break;
> +               break;
>         }
> -       return height / surface->buffer_viewport.scale;
> +
> +       surface->width = width / surface->buffer_viewport.scale;
> +       surface->height = height / surface->buffer_viewport.scale;
>  }
>
>  WL_EXPORT uint32_t
> @@ -1970,13 +1963,7 @@ weston_surface_commit(struct weston_surface
> *surface)
>         if (surface->pending.buffer || surface->pending.newly_attached)
>                 weston_surface_attach(surface, surface->pending.buffer);
>
> -       surface->width = 0;
> -       surface->height = 0;
> -       if (surface->buffer_ref.buffer) {
> -               /* This already includes the buffer scale */
> -               surface->width = weston_surface_buffer_width(surface);
> -               surface->height = weston_surface_buffer_height(surface);
> -       }
> +       weston_surface_set_size_from_buffer(surface);
>
>         if (surface->configure && surface->pending.newly_attached)
>                 surface->configure(surface,
> @@ -2203,12 +2190,7 @@ weston_subsurface_commit_from_cache(struct
> weston_subsurface *sub)
>                 weston_surface_attach(surface,
> sub->cached.buffer_ref.buffer);
>         weston_buffer_reference(&sub->cached.buffer_ref, NULL);
>
> -       surface->width = 0;
> -       surface->height = 0;
> -       if (surface->buffer_ref.buffer) {
> -               surface->width = weston_surface_buffer_width(surface);
> -               surface->height = weston_surface_buffer_height(surface);
> -       }
> +       weston_surface_set_size_from_buffer(surface);
>
>         if (surface->configure && sub->cached.newly_attached)
>                 surface->configure(surface, sub->cached.sx, sub->cached.sy
> ,
> diff --git a/src/compositor.h b/src/compositor.h
> index e445dc3..e31d7db 100644
> --- a/src/compositor.h
> +++ b/src/compositor.h
> @@ -918,10 +918,6 @@ void
>  weston_view_from_global_fixed(struct weston_view *view,
>                               wl_fixed_t x, wl_fixed_t y,
>                               wl_fixed_t *vx, wl_fixed_t *vy);
> -int32_t
> -weston_surface_buffer_width(struct weston_surface *surface);
> -int32_t
> -weston_surface_buffer_height(struct weston_surface *surface);
>
>  WL_EXPORT void
>  weston_surface_to_buffer_float(struct weston_surface *surface,
> --
> 1.8.4.2
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20131128/681f6512/attachment-0001.html>


More information about the wayland-devel mailing list