[PATCH fullscreen-shell v5 04/18] Add possible capabilities CURSOR_PLANE and ARBITRARY_MODE

Jason Ekstrand jason at jlekstrand.net
Mon Mar 17 17:35:23 PDT 2014


The CURSOR_PLANE capability indicates that the backend has a concept of a
cursor plane and can handle a cursor without compositing.  This is currently
only advertised by the DRM backend.

The ARBITRARY_MODE flag specifies that the backend is capable of switching to
virtually any resolution.  This is currently only advertised in the RDP
backend.  While it's a bit buggy right now, it should be capable of this.

Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
---
 src/compositor-drm.c | 5 +++++
 src/compositor-rdp.c | 2 ++
 src/compositor.h     | 6 ++++++
 3 files changed, 13 insertions(+)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 32d0769..acdbe03 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -2786,6 +2786,11 @@ drm_compositor_create(struct wl_display *display,
 		goto err_sprite;
 	}
 
+	/* A this point we have some idea of whether or not we have a working
+	 * cursor plane. */
+	if (!ec->cursors_are_broken)
+		ec->base.capabilities |= WESTON_CAP_CURSOR_PLANE;
+
 	path = NULL;
 
 	if (udev_input_init(&ec->input,
diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c
index e8e4a8d..ef14ba7 100644
--- a/src/compositor-rdp.c
+++ b/src/compositor-rdp.c
@@ -1033,6 +1033,8 @@ rdp_compositor_create(struct wl_display *display,
 	if (rdp_compositor_create_output(c, config->width, config->height, config->extra_modes) < 0)
 		goto err_compositor;
 
+	c->base.capabilities |= WESTON_CAP_ARBITRARY_MODES;
+
 	if(!config->env_socket) {
 		c->listener = freerdp_listener_new();
 		c->listener->PeerAccepted = rdp_incoming_peer;
diff --git a/src/compositor.h b/src/compositor.h
index 67d8ef9..eb917a4 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -558,6 +558,12 @@ enum weston_capability {
 
 	/* screencaptures need to be y-flipped */
 	WESTON_CAP_CAPTURE_YFLIP		= 0x0002,
+
+	/* backend/renderer has a seperate cursor plane */
+	WESTON_CAP_CURSOR_PLANE			= 0x0004,
+
+	/* backend supports setting arbitrary resolutions */
+	WESTON_CAP_ARBITRARY_MODES		= 0x0008,
 };
 
 struct weston_compositor {
-- 
1.8.5.3



More information about the wayland-devel mailing list