From 4d01bea808592aec74be2d2a4bbb6488b9299cda Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 14 Feb 2011 18:38:33 -0800 Subject: 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. --- src/glx/glxcmds.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/glx') 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))) { -- cgit v1.2.3