x11: fix vsync support
This commit is contained in:
parent
955ed0a95f
commit
5cd7611a9a
|
@ -179,14 +179,38 @@ int ContextGL_X11::get_window_height() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextGL_X11::set_use_vsync(bool p_use) {
|
void ContextGL_X11::set_use_vsync(bool p_use) {
|
||||||
GLXDrawable drawable = glXGetCurrentDrawable();
|
static bool setup = false;
|
||||||
//GLXSwapIntervalEXT(x11_display, drawable, p_use?1:0);
|
static PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT = NULL;
|
||||||
use_vsync=p_use;
|
static PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalMESA = NULL;
|
||||||
|
static PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = NULL;
|
||||||
|
|
||||||
|
if (!setup) {
|
||||||
|
setup = true;
|
||||||
|
String extensions = glXQueryExtensionsString(x11_display, DefaultScreen(x11_display));
|
||||||
|
if (extensions.find("GLX_EXT_swap_control") != -1)
|
||||||
|
glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalEXT");
|
||||||
|
if (extensions.find("GLX_MESA_swap_control") != -1)
|
||||||
|
glXSwapIntervalMESA = (PFNGLXSWAPINTERVALSGIPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalMESA");
|
||||||
|
if (extensions.find("GLX_SGI_swap_control") != -1)
|
||||||
|
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC) glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalSGI");
|
||||||
|
}
|
||||||
|
int val = p_use ? 1:0;
|
||||||
|
if (glXSwapIntervalMESA) {
|
||||||
|
glXSwapIntervalMESA(val);
|
||||||
|
}
|
||||||
|
else if (glXSwapIntervalSGI) {
|
||||||
|
glXSwapIntervalSGI(val);
|
||||||
|
}
|
||||||
|
else if (glXSwapIntervalEXT) {
|
||||||
|
GLXDrawable drawable = glXGetCurrentDrawable();
|
||||||
|
glXSwapIntervalEXT(x11_display, drawable, val);
|
||||||
|
}
|
||||||
|
else return;
|
||||||
|
use_vsync = p_use;
|
||||||
}
|
}
|
||||||
bool ContextGL_X11::is_using_vsync() const {
|
bool ContextGL_X11::is_using_vsync() const {
|
||||||
|
|
||||||
return false;
|
return use_vsync;
|
||||||
//return use_vsync;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue