Mesa (master): glx: Only register wire handlers for the events the server supports

Kristian Høgsberg krh at kemper.freedesktop.org
Tue Feb 16 15:39:38 UTC 2010


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

Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Tue Feb 16 10:27:57 2010 -0500

glx: Only register wire handlers for the events the server supports

---

 src/glx/dri2.c |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/src/glx/dri2.c b/src/glx/dri2.c
index a7a8cb5..963c587 100644
--- a/src/glx/dri2.c
+++ b/src/glx/dri2.c
@@ -81,7 +81,7 @@ static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay,
                                    dri2Info,
                                    dri2ExtensionName,
                                    &dri2ExtensionHooks,
-                                   DRI2NumberEvents, NULL)
+                                   0, NULL)
 
 static Bool
 DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire)
@@ -182,6 +182,7 @@ DRI2QueryVersion(Display * dpy, int *major, int *minor)
    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
    xDRI2QueryVersionReply rep;
    xDRI2QueryVersionReq *req;
+   int i, nevents;
 
    XextCheckExtension(dpy, info, dri2ExtensionName, False);
 
@@ -201,6 +202,24 @@ DRI2QueryVersion(Display * dpy, int *major, int *minor)
    UnlockDisplay(dpy);
    SyncHandle();
 
+   switch (rep.minorVersion) {
+   case 1:
+	   nevents = 0;
+	   break;
+   case 2:
+	   nevents = 1;
+	   break;
+   case 3:
+   default:
+	   nevents = 2;
+	   break;
+   }
+	
+   for (i = 0; i < nevents; i++) {
+       XESetWireToEvent (dpy, info->codes->first_event + i, DRI2WireToEvent);
+       XESetEventToWire (dpy, info->codes->first_event + i, DRI2EventToWire);
+   }
+
    return True;
 }
 




More information about the mesa-commit mailing list