summaryrefslogtreecommitdiff
path: root/lib/mesa/src/glx/glxcurrent.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mesa/src/glx/glxcurrent.c')
-rw-r--r--lib/mesa/src/glx/glxcurrent.c27
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;
}