Mesa (master): egl_dri2/x11: Check availability of the dri2 extension

Kristian Høgsberg krh at kemper.freedesktop.org
Mon Jun 20 15:15:41 UTC 2011


Module: Mesa
Branch: master
Commit: 80636ff2da374ca417db5afaaa0ab0cc5de9272d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=80636ff2da374ca417db5afaaa0ab0cc5de9272d

Author: Benjamin Franzke <benjaminfranzke at googlemail.com>
Date:   Sun Jun 19 23:48:39 2011 +0200

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.

---

 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 8bff294..4e00c95 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);




More information about the mesa-commit mailing list