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."); PanicAlert("Unable to create GLX context.");
return false; return false;
} }
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)GLInterface->GetFuncAddress("glXSwapIntervalSGI");
GLWin.x = _tx; GLWin.x = _tx;
GLWin.y = _ty; GLWin.y = _ty;
@ -131,7 +130,14 @@ bool cInterfaceGLX::MakeCurrent()
XMoveResizeWindow(GLWin.evdpy, GLWin.win, GLWin.x, GLWin.y, XMoveResizeWindow(GLWin.evdpy, GLWin.win, GLWin.x, GLWin.y,
GLWin.width, GLWin.height); GLWin.width, GLWin.height);
#endif #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() bool cInterfaceGLX::ClearCurrent()

View File

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