diff options
Diffstat (limited to 'lib/mesa/src/glx/glxcurrent.c')
-rw-r--r-- | lib/mesa/src/glx/glxcurrent.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/lib/mesa/src/glx/glxcurrent.c b/lib/mesa/src/glx/glxcurrent.c index d1193265f..2b9c708c3 100644 --- a/lib/mesa/src/glx/glxcurrent.c +++ b/lib/mesa/src/glx/glxcurrent.c @@ -36,8 +36,8 @@ #include <pthread.h> #include "glxclient.h" - #include "glapi.h" +#include "glx_error.h" /* ** We setup some dummy structures here so that the API can be used @@ -165,21 +165,6 @@ glXGetCurrentDrawable(void) return gc->currentDrawable; } -static void -__glXGenerateError(Display * dpy, XID resource, - BYTE errorCode, CARD16 minorCode) -{ - xError error; - - error.errorCode = errorCode; - error.resourceID = resource; - error.sequenceNumber = dpy->request; - error.type = X_Error; - error.majorCode = __glXSetupForCommand(dpy); - error.minorCode = minorCode; - _XError(dpy, &error); -} - /** * Make a particular context current. * @@ -209,6 +194,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, return True; } + /* can't have only one be 0 */ + if (!!draw != !!read) { + __glXUnlock(); + __glXSendError(dpy, BadMatch, None, X_GLXMakeContextCurrent, True); + return False; + } + if (oldGC != &dummyContext) { if (--oldGC->thread_refcount == 0) { oldGC->vtable->unbind(oldGC, gc); @@ -228,7 +220,8 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw, if (gc->vtable->bind(gc, oldGC, draw, read) != Success) { __glXSetCurrentContextNull(); __glXUnlock(); - __glXGenerateError(dpy, None, GLXBadContext, X_GLXMakeContextCurrent); + __glXSendError(dpy, GLXBadContext, None, X_GLXMakeContextCurrent, + False); return GL_FALSE; } |