From b20b00923a588dfa3d89ba44a0370b333199740f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Thu, 15 Aug 2013 11:54:03 -0700 Subject: [PATCH] window: Add API to check for subcompositor, use in subsurface example This way we can fail with a nice error message. --- clients/subsurfaces.c | 6 ++++++ clients/window.c | 11 +++++++++++ clients/window.h | 3 +++ 3 files changed, 20 insertions(+) diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c index f93057e7..51b07a2f 100644 --- a/clients/subsurfaces.c +++ b/clients/subsurfaces.c @@ -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); diff --git a/clients/window.c b/clients/window.c index 3410354c..7223e377 100644 --- a/clients/window.c +++ b/clients/window.c @@ -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) { diff --git a/clients/window.h b/clients/window.h index a8177341..1646d5a8 100644 --- a/clients/window.h +++ b/clients/window.h @@ -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);