[PATCH weston v3 08/17] compositor: migrate to stable viewporter.xml
Pekka Paalanen
ppaalanen at gmail.com
Tue Apr 26 12:51:00 UTC 2016
From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Migrate from wl_scaler to wp_viewporter extension. The viewporter.xml
file is provided by wayland-protocols.
This stops Weston from advertising wl_scaler, and advertises
wp_viewporter instead.
Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
Makefile.am | 4 ++--
configure.ac | 2 ++
src/compositor.c | 68 +++++++++++---------------------------------------------
src/compositor.h | 5 +++--
4 files changed, 20 insertions(+), 59 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 2d72730..9056045 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -126,8 +126,8 @@ nodist_weston_SOURCES = \
protocol/input-method-unstable-v1-server-protocol.h \
protocol/presentation-time-protocol.c \
protocol/presentation-time-server-protocol.h \
- protocol/scaler-protocol.c \
- protocol/scaler-server-protocol.h \
+ protocol/viewporter-protocol.c \
+ protocol/viewporter-server-protocol.h \
protocol/linux-dmabuf-unstable-v1-protocol.c \
protocol/linux-dmabuf-unstable-v1-server-protocol.h
diff --git a/configure.ac b/configure.ac
index 4199616..70a97cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,6 +4,8 @@ m4_define([weston_micro_version], [90])
m4_define([weston_version],
[weston_major_version.weston_minor_version.weston_micro_version])
+# XXX: bump wayland-protocols dependency to include viewporter.xml
+
AC_PREREQ([2.64])
AC_INIT([weston],
[weston_version],
diff --git a/src/compositor.c b/src/compositor.c
index 75c8c78..89e6246 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -54,7 +54,7 @@
#include "timeline.h"
#include "compositor.h"
-#include "scaler-server-protocol.h"
+#include "viewporter-server-protocol.h"
#include "presentation-time-server-protocol.h"
#include "shared/helpers.h"
#include "shared/os-compatibility.h"
@@ -923,7 +923,7 @@ weston_surface_to_buffer_float(struct weston_surface *surface,
/** Transform a rectangle from surface coordinates to buffer coordinates
*
- * \param surface The surface to fetch wl_viewport and buffer transformation
+ * \param surface The surface to fetch wp_viewport and buffer transformation
* from.
* \param rect The rectangle to transform.
* \return The transformed rectangle.
@@ -963,7 +963,7 @@ weston_surface_to_buffer_rect(struct weston_surface *surface,
/** Transform a region from surface coordinates to buffer coordinates
*
- * \param surface The surface to fetch wl_viewport and buffer transformation
+ * \param surface The surface to fetch wp_viewport and buffer transformation
* from.
* \param surface_region[in] The region in surface coordinates.
* \param buffer_region[out] The region converted to buffer coordinates.
@@ -2843,7 +2843,8 @@ weston_surface_commit_state(struct weston_surface *surface,
/* wl_surface.set_buffer_transform */
/* wl_surface.set_buffer_scale */
- /* wl_viewport.set */
+ /* wp_viewport.set_source */
+ /* wp_viewport.set_destination */
surface->buffer_viewport = state->buffer_viewport;
/* wl_surface.attach */
@@ -4365,48 +4366,6 @@ viewport_destroy(struct wl_client *client,
}
static void
-viewport_set(struct wl_client *client,
- struct wl_resource *resource,
- wl_fixed_t src_x,
- wl_fixed_t src_y,
- wl_fixed_t src_width,
- wl_fixed_t src_height,
- int32_t dst_width,
- int32_t dst_height)
-{
- struct weston_surface *surface =
- wl_resource_get_user_data(resource);
-
- assert(surface->viewport_resource != NULL);
-
- if (wl_fixed_to_double(src_width) < 0 ||
- wl_fixed_to_double(src_height) < 0) {
- wl_resource_post_error(resource,
- WL_VIEWPORT_ERROR_BAD_VALUE,
- "source dimensions must be non-negative (%fx%f)",
- wl_fixed_to_double(src_width),
- wl_fixed_to_double(src_height));
- return;
- }
-
- if (dst_width <= 0 || dst_height <= 0) {
- wl_resource_post_error(resource,
- WL_VIEWPORT_ERROR_BAD_VALUE,
- "destination dimensions must be positive (%dx%d)",
- dst_width, dst_height);
- return;
- }
-
- surface->pending.buffer_viewport.buffer.src_x = src_x;
- surface->pending.buffer_viewport.buffer.src_y = src_y;
- surface->pending.buffer_viewport.buffer.src_width = src_width;
- surface->pending.buffer_viewport.buffer.src_height = src_height;
- surface->pending.buffer_viewport.surface.width = dst_width;
- surface->pending.buffer_viewport.surface.height = dst_height;
- surface->pending.buffer_viewport.changed = 1;
-}
-
-static void
viewport_set_source(struct wl_client *client,
struct wl_resource *resource,
wl_fixed_t src_x,
@@ -4430,7 +4389,7 @@ viewport_set_source(struct wl_client *client,
if (src_width <= 0 || src_height <= 0) {
wl_resource_post_error(resource,
- WL_VIEWPORT_ERROR_BAD_VALUE,
+ WP_VIEWPORT_ERROR_BAD_VALUE,
"source size must be positive (%fx%f)",
wl_fixed_to_double(src_width),
wl_fixed_to_double(src_height));
@@ -4464,7 +4423,7 @@ viewport_set_destination(struct wl_client *client,
if (dst_width <= 0 || dst_height <= 0) {
wl_resource_post_error(resource,
- WL_VIEWPORT_ERROR_BAD_VALUE,
+ WP_VIEWPORT_ERROR_BAD_VALUE,
"destination size must be positive (%dx%d)",
dst_width, dst_height);
return;
@@ -4475,9 +4434,8 @@ viewport_set_destination(struct wl_client *client,
surface->pending.buffer_viewport.changed = 1;
}
-static const struct wl_viewport_interface viewport_interface = {
+static const struct wp_viewport_interface viewport_interface = {
viewport_destroy,
- viewport_set,
viewport_set_source,
viewport_set_destination
};
@@ -4502,12 +4460,12 @@ scaler_get_viewport(struct wl_client *client,
if (surface->viewport_resource) {
wl_resource_post_error(scaler,
- WL_SCALER_ERROR_VIEWPORT_EXISTS,
+ WP_VIEWPORTER_ERROR_VIEWPORT_EXISTS,
"a viewport for that surface already exists");
return;
}
- resource = wl_resource_create(client, &wl_viewport_interface,
+ resource = wl_resource_create(client, &wp_viewport_interface,
version, id);
if (resource == NULL) {
wl_client_post_no_memory(client);
@@ -4520,7 +4478,7 @@ scaler_get_viewport(struct wl_client *client,
surface->viewport_resource = resource;
}
-static const struct wl_scaler_interface scaler_interface = {
+static const struct wp_viewporter_interface scaler_interface = {
scaler_destroy,
scaler_get_viewport
};
@@ -4531,7 +4489,7 @@ bind_scaler(struct wl_client *client,
{
struct wl_resource *resource;
- resource = wl_resource_create(client, &wl_scaler_interface,
+ resource = wl_resource_create(client, &wp_viewporter_interface,
version, id);
if (resource == NULL) {
wl_client_post_no_memory(client);
@@ -4720,7 +4678,7 @@ weston_compositor_create(struct wl_display *display, void *user_data)
ec, bind_subcompositor))
goto fail;
- if (!wl_global_create(ec->wl_display, &wl_scaler_interface, 2,
+ if (!wl_global_create(ec->wl_display, &wp_viewporter_interface, 1,
ec, bind_scaler))
goto fail;
diff --git a/src/compositor.h b/src/compositor.h
index cb9df00..33e98f9 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -991,7 +991,8 @@ struct weston_surface_state {
/* wl_surface.set_buffer_transform */
/* wl_surface.set_scaling_factor */
- /* wl_viewport.set */
+ /* wp_viewport.set_source */
+ /* wp_viewport.set_destination */
struct weston_buffer_viewport buffer_viewport;
};
@@ -1039,7 +1040,7 @@ struct weston_surface {
int32_t height_from_buffer;
bool keep_buffer; /* for backends to prevent early release */
- /* wl_viewport resource for this surface */
+ /* wp_viewport resource for this surface */
struct wl_resource *viewport_resource;
/* All the pending state, that wl_surface.commit will apply. */
--
2.7.3
More information about the wayland-devel
mailing list