window: Add API to check for subcompositor, use in subsurface example
authorKristian Høgsberg <krh@bitplanet.net>
Thu, 15 Aug 2013 18:54:03 +0000 (11:54 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 15 Aug 2013 18:54:03 +0000 (11:54 -0700)
This way we can fail with a nice error message.

clients/subsurfaces.c
clients/window.c
clients/window.h

index f93057e..51b07a2 100644 (file)
@@ -781,6 +781,12 @@ main(int argc, char *argv[])
                return -1;
        }
 
+       if (!display_has_subcompositor(display)) {
+               fprintf(stderr, "compositor does not support "
+                       "the subcompositor extension\n");
+               return -1;
+       }
+
        app = demoapp_create(display);
 
        display_run(display);
index 3410354..7223e37 100644 (file)
@@ -5367,6 +5367,17 @@ display_get_display(struct display *display)
        return display->display;
 }
 
+int
+display_has_subcompositor(struct display *display)
+{
+       if (display->subcompositor)
+               return 1;
+
+       wl_display_roundtrip(display->display);
+
+       return display->subcompositor != NULL;
+}
+
 cairo_device_t *
 display_get_cairo_device(struct display *display)
 {
index a817734..1646d5a 100644 (file)
@@ -78,6 +78,9 @@ display_get_user_data(struct display *display);
 struct wl_display *
 display_get_display(struct display *display);
 
+int
+display_has_subcompositor(struct display *display);
+
 cairo_device_t *
 display_get_cairo_device(struct display *display);