Linux patch for swapEXT swapMESA and swapSGI

This commit is contained in:
Charles J. Cliffe 2015-02-10 00:57:36 -05:00
parent a803a2d136
commit a034c810df

View File

@ -6,6 +6,10 @@
#include <OpenGL/OpenGL.h> #include <OpenGL/OpenGL.h>
#endif #endif
#ifdef __linux__
#include <dlfcn.h>
#endif
#ifdef _WIN32 #ifdef _WIN32
PFNWGLGETEXTENSIONSSTRINGEXTPROC wglGetExtensionsStringEXT = NULL; PFNWGLGETEXTENSIONSSTRINGEXTPROC wglGetExtensionsStringEXT = NULL;
@ -50,22 +54,27 @@ void initGLExtensions() {
CGLSetParameter (CGLGetCurrentContext(), kCGLCPSwapInterval, &gl_interval); CGLSetParameter (CGLGetCurrentContext(), kCGLCPSwapInterval, &gl_interval);
#endif #endif
/* #ifdef __linux__
#ifdef LINUX dlopen("libglx.so",RTLD_LAZY);
char* glext_str = NULL;
glXSwapIntervalSGIFunc glXSwapIntervalSGI = 0; void (*glxSwapIntervalEXTFunc) (Display *dpy, GLXDrawable drawable, int interval);
glXSwapIntervalMESAFunc glXSwapIntervalMESA = 0; int (*glxSwapIntervalMESAFunc)(unsigned int interval);
int (*glxSwapIntervalSGIFunc) (int interval);
glext_str = (char*)glXQueryExtensionsString (glXGetCurrentDisplay(), 0); glxSwapIntervalEXTFunc = (void (*) (Display *dpy, GLXDrawable drawable, int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalEXT");
if (strstr (glext_str, "GLX_SGI_swap_control") != NULL) { glxSwapIntervalMESAFunc = (int (*)(unsigned int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalMESA");
glXSwapIntervalSGI = (glXSwapIntervalSGIFunc) dlsym(RTLD_DEFAULT,"glXSwapIntervalSGI") && glXSwapIntervalSGI (interval); glxSwapIntervalSGIFunc = (int (*) (int interval)) dlsym(RTLD_DEFAULT,"glXSwapIntervalSGI");
} else if (strstr(glext_str, "GLX_MESA_swap_control") != NULL) { if (glxSwapIntervalEXTFunc) {
glXSwapIntervalMESA = (glXSwapIntervalMESAFunc) dlsym(RTLD_DEFAULT,"glXSwapIntervalMESA") && glXSwapIntervalMESA (interval); Display *dpy = glXGetCurrentDisplay();
GLXDrawable drawable = glXGetCurrentDrawable();
glxSwapIntervalEXTFunc(dpy, drawable, interval);
} else if (glxSwapIntervalMESAFunc) {
glxSwapIntervalMESAFunc(interval);
} else if (glxSwapIntervalSGIFunc) {
glxSwapIntervalSGIFunc(interval);
} }
#endif #endif
*/
GLExt_initialized = true; GLExt_initialized = true;
} }