compositor: merge surface size from buffer size funcs
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.
diff --git a/src/compositor.c b/src/compositor.c
index 59b4a53..b8b7c0f 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1140,40 +1140,33 @@
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;
+ int32_t width, height;
+
+ if (!surface->buffer_ref.buffer) {
+ surface->width = 0;
+ surface->height = 0;
+ return;
+ }
+
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;
+ height = surface->buffer_ref.buffer->width;
+ break;
default:
width = surface->buffer_ref.buffer->width;
- break;
- }
- 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:
- height = surface->buffer_ref.buffer->width;
- break;
- default:
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
@@ -1969,13 +1962,7 @@
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,
@@ -2202,12 +2189,7 @@
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,