Fetch swapInterval function pointer after binding a context

This fixes vsync on windows
This commit is contained in:
degasus 2014-02-24 12:45:02 +01:00
parent 21bb722c93
commit 8af3f751db
2 changed files with 15 additions and 6 deletions

View File

@ -110,7 +110,6 @@ bool cInterfaceGLX::Create(void *&window_handle)
PanicAlert("Unable to create GLX context.");
return false;
}
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)GLInterface->GetFuncAddress("glXSwapIntervalSGI");
GLWin.x = _tx;
GLWin.y = _ty;
@ -131,7 +130,14 @@ bool cInterfaceGLX::MakeCurrent()
XMoveResizeWindow(GLWin.evdpy, GLWin.win, GLWin.x, GLWin.y,
GLWin.width, GLWin.height);
#endif
return glXMakeCurrent(GLWin.dpy, GLWin.win, GLWin.ctx);
bool success = glXMakeCurrent(GLWin.dpy, GLWin.win, GLWin.ctx);
if (success)
{
// load this function based on the current bound context
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)GLInterface->GetFuncAddress("glXSwapIntervalSGI");
}
return success;
}
bool cInterfaceGLX::ClearCurrent()

View File

@ -128,9 +128,6 @@ bool cInterfaceWGL::Create(void *&window_handle)
return false;
}
// Grab the swap interval function pointer
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)GLInterface->GetFuncAddress("wglSwapIntervalEXT");
return true;
}
@ -141,7 +138,13 @@ bool cInterfaceWGL::MakeCurrent()
bool cInterfaceWGL::ClearCurrent()
{
return wglMakeCurrent(hDC, NULL) ? true : false;
bool success = wglMakeCurrent(hDC, NULL) ? true : false;
if (success)
{
// Grab the swap interval function pointer
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)GLInterface->GetFuncAddress("wglSwapIntervalEXT");
}
return success;
}
// Update window width, size and etc. Called from Render.cpp