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

Jonny Lamb jonny.lamb at collabora.co.uk
Tue Nov 26 09:19:43 PST 2013


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



More information about the wayland-devel mailing list