Fixed: #1145 Implement VSync under Linux
This commit is contained in:
parent
8d038f9a30
commit
2ef72986ba
1 changed files with 29 additions and 19 deletions
|
@ -2041,38 +2041,38 @@ void CDriverGL::setSwapVBLInterval(uint interval)
|
|||
if (!_Initialized)
|
||||
return;
|
||||
|
||||
_Interval = interval;
|
||||
bool res = true;
|
||||
|
||||
#ifdef NL_OS_WINDOWS
|
||||
if(_Extensions.WGLEXTSwapControl)
|
||||
{
|
||||
nwglSwapIntervalEXT(_Interval);
|
||||
res = nwglSwapIntervalEXT(_Interval) == TRUE;
|
||||
}
|
||||
#elif defined(NL_OS_MAC)
|
||||
#elif defined(NL_OS_UNIX)
|
||||
if (_win && _Extensions.GLXEXTSwapControl)
|
||||
{
|
||||
if (nglXSwapIntervalEXT(_dpy, _win, interval))
|
||||
{
|
||||
nlwarning("Could not set swap interval");
|
||||
}
|
||||
res = nglXSwapIntervalEXT(_dpy, _win, interval) == 0;
|
||||
}
|
||||
else if (_Extensions.GLXSGISwapControl)
|
||||
{
|
||||
if (nglXSwapIntervalSGI(interval))
|
||||
{
|
||||
nlwarning("Could not set swap interval");
|
||||
}
|
||||
res = nglXSwapIntervalSGI(interval) == 0;
|
||||
}
|
||||
else if (_Extensions.GLXMESASwapControl)
|
||||
{
|
||||
if (nglXSwapIntervalMESA(interval))
|
||||
res = nglXSwapIntervalMESA(interval) == 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (res)
|
||||
{
|
||||
_Interval = interval;
|
||||
}
|
||||
else
|
||||
{
|
||||
nlwarning("Could not set swap interval");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
uint CDriverGL::getSwapVBLInterval()
|
||||
|
@ -2082,12 +2082,22 @@ uint CDriverGL::getSwapVBLInterval()
|
|||
#ifdef NL_OS_WINDOWS
|
||||
if(_Extensions.WGLEXTSwapControl)
|
||||
{
|
||||
return _Interval;
|
||||
return nwglGetSwapIntervalEXT();
|
||||
}
|
||||
#elif defined(NL_OS_MAC)
|
||||
#elif defined(NL_OS_UNIX)
|
||||
if (_win && _Extensions.GLXEXTSwapControl)
|
||||
{
|
||||
uint swap, maxSwap;
|
||||
glXQueryDrawable(_dpy, _win, GLX_SWAP_INTERVAL_EXT, &swap);
|
||||
glXQueryDrawable(_dpy, _win, GLX_MAX_SWAP_INTERVAL_EXT, &maxSwap);
|
||||
nlwarning("The swap interval is %u and the max swap interval is %u", swap, maxSwap);
|
||||
return swap;
|
||||
}
|
||||
else if (_Extensions.GLXMESASwapControl)
|
||||
{
|
||||
return nglXGetSwapIntervalMESA();
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
|
||||
return _Interval;
|
||||
|
|
Loading…
Reference in a new issue