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
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,
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,
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,