--- ./glxgears.c.~1.9.~ 2005-02-03 18:55:35.000000000 +0100 +++ ./glxgears.c 2005-03-06 04:09:18.000000000 +0100 @@ -567,18 +567,22 @@ #endif /* BUILD_PRINTSUPPORT */ draw(); - glXSwapBuffers(dpy, win); - /* Flush frame, give CPU away and/or sync with Xserver */ + /* Flush frame and/or sync with Xserver, do this before + * glXSwapBuffers for performance reasons */ if (do_glfinish_after_frame) glFinish(); if (do_xflush_after_frame) XFlush(dpy); - if (do_sched_yield_after_frame) - sched_yield(); if (do_xsync_after_frame) XSync(dpy, False); + glXSwapBuffers(dpy, win); + + /* give CPU away while glXSwapBuffers keeps the GPU busy */ + if (do_sched_yield_after_frame) + sched_yield(); + #ifdef BUILD_PRINTSUPPORT if (numPages > 0) { Log(("End page.\n"));