From a1d1c9e1d9ec823043085f534236e136ff1faaa3 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Tue, 10 Feb 2015 18:01:57 -0500 Subject: [PATCH] Possible vsync fix for linux DRI2SwapInterval based X11 --- src/util/GLExt.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/util/GLExt.cpp b/src/util/GLExt.cpp index 296d90b..32b4501 100644 --- a/src/util/GLExt.cpp +++ b/src/util/GLExt.cpp @@ -60,15 +60,21 @@ void initGLExtensions() { void (*glxSwapIntervalEXTFunc) (Display *dpy, GLXDrawable drawable, int interval); int (*glxSwapIntervalMESAFunc)(unsigned int interval); int (*glxSwapIntervalSGIFunc) (int interval); + void (*DRI2SwapIntervalFunc) (Display *dpy, XID drawable, int interval); glxSwapIntervalEXTFunc = (void (*) (Display *dpy, GLXDrawable drawable, int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalEXT"); glxSwapIntervalMESAFunc = (int (*)(unsigned int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalMESA"); glxSwapIntervalSGIFunc = (int (*) (int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalSGI"); + DRI2SwapIntervalFunc = (void (*) (Display *dpy, XID drawable, int interval)) dlsym(RTLD_DEFAULT,"DRI2SwapInterval"); if (glxSwapIntervalEXTFunc) { Display *dpy = glXGetCurrentDisplay(); GLXDrawable drawable = glXGetCurrentDrawable(); glxSwapIntervalEXTFunc(dpy, drawable, interval); + } else if (DRI2SwapInterval) { + Display *dpy = glXGetCurrentDisplay(); + GLXDrawable drawable = glXGetCurrentDrawable(); + DRI2SwapInterval(dpy, drawable, interval); } else if (glxSwapIntervalMESAFunc) { glxSwapIntervalMESAFunc(interval); } else if (glxSwapIntervalSGIFunc) {