[PATCH] Add a weston_surface_set_size function

Pekka Paalanen ppaalanen at gmail.com
Thu Dec 5 01:53:23 PST 2013


On Wed,  4 Dec 2013 20:32:03 -0600
Jason Ekstrand <jason at jlekstrand.net> wrote:

> Surfaces that are created by clients get their size automatically
> updated by the attach/commit.  Surfaces created directly by shells
> (such as black surfaces) sometimes need to be manually resized.  This
> function allows you to do that while being somewhat less messy than
> messing with the internals of weston_surface manually.
> 
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  desktop-shell/shell.c |  9 +++------
>  src/compositor.c      | 15 +++++++++++----
>  src/compositor.h      |  4 ++++
>  3 files changed, 18 insertions(+), 10 deletions(-)
> 
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index de54e37..56e0338 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -504,8 +504,7 @@ create_focus_surface(struct weston_compositor *ec,
>  	fsurf->view = weston_view_create (surface);
>  	fsurf->view->output = output;
>  
> -	surface->width = output->width;
> -	surface->height = output->height;
> +	weston_surface_set_size(surface, output->width,
> output->height); weston_view_set_position(fsurf->view, output->x,
> output->y); weston_surface_set_color(surface, 0.0, 0.0, 0.0, 1.0);
>  	pixman_region32_fini(&surface->opaque);
> @@ -2452,8 +2451,7 @@ create_black_surface(struct weston_compositor
> *ec, pixman_region32_fini(&surface->input);
>  	pixman_region32_init_rect(&surface->input, 0, 0, w, h);
>  
> -	surface->width = w;
> -	surface->height = h;
> +	weston_surface_set_size(surface, w, y);
>  	weston_view_set_position(view, x, y);
>  
>  	return view;
> @@ -4585,8 +4583,7 @@ shell_fade_create_surface(struct desktop_shell
> *shell) return NULL;
>  	}
>  
> -	surface->width = 8192;
> -	surface->height = 8192;
> +	weston_surface_set_size(surface, 8192, 8192);
>  	weston_view_set_position(view, 0, 0);
>  	weston_surface_set_color(surface, 0.0, 0.0, 0.0, 1.0);
>  	wl_list_insert(&compositor->fade_layer.view_list,
> diff --git a/src/compositor.c b/src/compositor.c
> index 8f4bdef..97c42b3 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -1133,8 +1133,7 @@ weston_surface_is_mapped(struct weston_surface
> *surface) }
>  
>  static void
> -weston_surface_set_size(struct weston_surface *surface,
> -			int32_t width, int32_t height)
> +surface_set_size(struct weston_surface *surface, int32_t width,
> int32_t height) {
>  	struct weston_view *view;
>  
> @@ -1148,13 +1147,21 @@ weston_surface_set_size(struct weston_surface
> *surface, weston_view_geometry_dirty(view);
>  }
>  
> +WL_EXPORT void
> +weston_surface_set_size(struct weston_surface *surface,
> +			int32_t width, int32_t height)
> +{
> +	assert(!surface->resource);
> +	surface_set_size(surface, width, height);
> +}
> +
>  static void
>  weston_surface_set_size_from_buffer(struct weston_surface *surface)
>  {
>  	int32_t width, height;
>  
>  	if (!surface->buffer_ref.buffer) {
> -		weston_surface_set_size(surface, 0, 0);
> +		surface_set_size(surface, 0, 0);
>  		return;
>  	}
>  
> @@ -1174,7 +1181,7 @@ weston_surface_set_size_from_buffer(struct
> weston_surface *surface) 
>  	width = width / surface->buffer_viewport.scale;
>  	height = height / surface->buffer_viewport.scale;
> -	weston_surface_set_size(surface, width, height);
> +	surface_set_size(surface, width, height);
>  }
>  
>  WL_EXPORT uint32_t
> diff --git a/src/compositor.h b/src/compositor.h
> index 6bd637e..9f89d00 100644
> --- a/src/compositor.h
> +++ b/src/compositor.h
> @@ -1138,6 +1138,10 @@ weston_view_schedule_repaint(struct
> weston_view *view); int
>  weston_surface_is_mapped(struct weston_surface *surface);
>  
> +WL_EXPORT void
> +weston_surface_set_size(struct weston_surface *surface,
> +			int32_t width, int32_t height);
> +
>  void
>  weston_surface_schedule_repaint(struct weston_surface *surface);
>  

Looking good!

Thanks,
pq


More information about the wayland-devel mailing list