Add possible capabilities CURSOR_PLANE and ARBITRARY_MODE
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 3 Apr 2014 00:53:46 +0000 (19:53 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 3 Apr 2014 04:25:27 +0000 (21:25 -0700)
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@jlekstrand.net>
src/compositor-drm.c
src/compositor-rdp.c
src/compositor.h

index 77caddf..3c15ec3 100644 (file)
@@ -2788,6 +2788,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,
index 909e225..f4c80a0 100644 (file)
@@ -1005,7 +1005,9 @@ rdp_compositor_create(struct wl_display *display,
        if (rdp_compositor_create_output(c, config->width, config->height) < 0)
                goto err_compositor;
 
-       if (!config->env_socket) {
+       c->base.capabilities |= WESTON_CAP_ARBITRARY_MODES;
+
+       if(!config->env_socket) {
                c->listener = freerdp_listener_new();
                c->listener->PeerAccepted = rdp_incoming_peer;
                c->listener->param4 = c;
index 37ad17f..15d6e03 100644 (file)
@@ -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 {