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);