glx: only advertise GLX_INTEL_swap_event if it's supported
authorZack Rusin <zackr@vmware.com>
Fri, 25 Jan 2013 01:48:12 +0000 (17:48 -0800)
committerAndreas Boll <andreas.boll.dev@gmail.com>
Wed, 13 Feb 2013 17:46:39 +0000 (18:46 +0100)
Only drivers supporting DRI2 version >=4 support GLX_INTEL_swap_event.
So lets mark it as such otherwise applications which use this extension
(i.e. everything based on Clutter, e.g. gnome-shell) break horribly on
drivers supporting DRI2 versions only up to 3.

Note: This is a candidate for the 9.0 branch.

Reviewed-by: Brian Paul <brianp@vmware.com>
(cherry picked from commit dbb2d192de33064ae6cdb799d71c5ac89a6ea8ff)

src/glx/dri2_glx.c

index 15f590e..b8a007c 100644 (file)
@@ -960,8 +960,9 @@ dri2BindExtensions(struct dri2_screen *psc, const __DRIextension **extensions)
    __glXEnableDirectExtension(&psc->base, "GLX_MESA_swap_control");
    __glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
 
-   /* FIXME: if DRI2 version supports it... */
-   __glXEnableDirectExtension(&psc->base, "GLX_INTEL_swap_event");
+   if (psc->dri2->base.version >= 4) {
+      __glXEnableDirectExtension(&psc->base, "GLX_INTEL_swap_event");
+   }
 
    if (psc->dri2->base.version >= 3) {
       const unsigned mask = psc->dri2->getAPIMask(psc->driScreen);