egl_dri2/x11: Check availability of the dri2 extension
authorBenjamin Franzke <benjaminfranzke@googlemail.com>
Sun, 19 Jun 2011 21:48:39 +0000 (23:48 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 20 Jun 2011 14:06:24 +0000 (10:06 -0400)
Do this before query versions, or xcb will shutdown
and the connection can not be used for swrast.

src/egl/drivers/dri2/platform_x11.c

index 8bff294c9e67ab05f4c8f099ecee0c279e1b6a79..4e00c958cbdf727e88fc2095608067efe418c778 100644 (file)
@@ -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);