window: Add API to check for subcompositor, use in subsurface example
This way we can fail with a nice error message.
diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c
index f93057e..51b07a2 100644
--- a/clients/subsurfaces.c
+++ b/clients/subsurfaces.c
@@ -781,6 +781,12 @@
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);
diff --git a/clients/window.c b/clients/window.c
index 3410354..7223e37 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -5367,6 +5367,17 @@
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)
{
diff --git a/clients/window.h b/clients/window.h
index a817734..1646d5a 100644
--- a/clients/window.h
+++ b/clients/window.h
@@ -78,6 +78,9 @@
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);