On Wed, 4 Dec 2013 20:32:03 -0600 Jason Ekstrand <ja...@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 <ja...@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 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel