[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