diff options
author | Eric Anholt <[email protected]> | 2011-02-14 18:38:33 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2011-02-26 12:43:15 -0800 |
commit | 4d01bea808592aec74be2d2a4bbb6488b9299cda (patch) | |
tree | ed1534967e14af48c67e2d130cfdaaeecf7acfba /src/glx/glxcmds.c | |
parent | 49d7e48b33264d94e30af6129c281b6acafa9427 (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/glxcmds.c')
-rw-r--r-- | src/glx/glxcmds.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 80eaf72b7d5..22bebab26bc 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))) { |