diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2011-06-19 23:48:39 +0200 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-06-20 10:06:24 -0400 |
commit | 80636ff2da374ca417db5afaaa0ab0cc5de9272d (patch) | |
tree | 1bee86817f3e291069d3b7eb73f62155ef44e4df | |
parent | 8eea050f5aed6ad8aeb64105c0e2581f0fd0b10a (diff) |
egl_dri2/x11: Check availability of the dri2 extension
Do this before query versions, or xcb will shutdown
and the connection can not be used for swrast.
-rw-r--r-- | src/egl/drivers/dri2/platform_x11.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 8bff294c9e..4e00c958cb 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -479,10 +479,19 @@ dri2_connect(struct dri2_egl_display *dri2_dpy) xcb_generic_error_t *error; xcb_screen_iterator_t s; char *driver_name, *device_name; + const xcb_query_extension_reply_t *extension; xcb_prefetch_extension_data (dri2_dpy->conn, &xcb_xfixes_id); xcb_prefetch_extension_data (dri2_dpy->conn, &xcb_dri2_id); + extension = xcb_get_extension_data(dri2_dpy->conn, &xcb_xfixes_id); + if (!(extension && extension->present)) + return EGL_FALSE; + + extension = xcb_get_extension_data(dri2_dpy->conn, &xcb_dri2_id); + if (!(extension && extension->present)) + return EGL_FALSE; + xfixes_query_cookie = xcb_xfixes_query_version(dri2_dpy->conn, XCB_XFIXES_MAJOR_VERSION, XCB_XFIXES_MINOR_VERSION); |