summaryrefslogtreecommitdiff
path: root/src/glx
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2011-02-14 18:38:33 -0800
committerEric Anholt <eric@anholt.net>2011-02-26 12:43:15 -0800
commit4d01bea808592aec74be2d2a4bbb6488b9299cda (patch)
treeed1534967e14af48c67e2d130cfdaaeecf7acfba /src/glx
parent49d7e48b33264d94e30af6129c281b6acafa9427 (diff)
glx: Don't do the implicit glFlush in SwapBuffers if it's the wrong drawable.
The GLX Spec says you only implicitly glFlush if the drawable being swapped is the current context's drawable.
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/glxcmds.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 80eaf72b7d..22bebab26b 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -727,11 +727,16 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
xGLXSwapBuffersReq *req;
#endif
+ gc = __glXGetCurrentContext();
+
#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable);
if (pdraw != NULL) {
- glFlush();
+ if (gc && drawable == gc->currentDrawable) {
+ glFlush();
+ }
+
(*pdraw->psc->driScreen->swapBuffers)(pdraw, 0, 0, 0);
return;
}
@@ -746,7 +751,6 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
** The calling thread may or may not have a current context. If it
** does, send the context tag so the server can do a flush.
*/
- gc = __glXGetCurrentContext();
if ((gc != NULL) && (dpy == gc->currentDpy) &&
((drawable == gc->currentDrawable)
|| (drawable == gc->currentReadable))) {