summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2013-12-04 20:32:03 -0600
committerKristian Høgsberg <krh@bitplanet.net>2013-12-16 17:23:09 -0800
commit5c11a3340bf62f985c307e83b4999c8377576295 (patch)
tree842a50a398e63309b8a325b9767e7ccfda038913
parentfc63fddcee7301a9c1693561a7300a2929dc4baa (diff)
Add a weston_surface_set_size function
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@jlekstrand.net>
-rw-r--r--desktop-shell/shell.c9
-rw-r--r--src/compositor.c15
-rw-r--r--src/compositor.h4
3 files changed, 18 insertions, 10 deletions
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index c962d269..3d586eca 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -508,8 +508,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);
@@ -2471,8 +2470,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;
@@ -4593,8 +4591,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 c4ffb5e9..d273e3fa 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1219,8 +1219,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;
@@ -1234,13 +1233,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;
}
@@ -1260,7 +1267,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 f5a0ba42..f32a4976 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -1152,6 +1152,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);