Make sure the vsync methods are really available
libglvnd seems to return a pointer to a function that does NOTHING for things the backing driver doesn't support. So we check if the extension is actually advertised before using it. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
8114ec4c79
commit
da3df75a8c
|
@ -4485,6 +4485,11 @@ vsync_opengl_init(session_t *ps) {
|
||||||
if (!ensure_glx_context(ps))
|
if (!ensure_glx_context(ps))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!glx_hasglxext(ps, "GLX_SGI_video_sync")) {
|
||||||
|
printf_errf("(): Your driver doesn't support SGI_video_sync, giving up.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Get video sync functions
|
// Get video sync functions
|
||||||
if (!ps->psglx->glXGetVideoSyncSGI)
|
if (!ps->psglx->glXGetVideoSyncSGI)
|
||||||
ps->psglx->glXGetVideoSyncSGI = (f_GetVideoSync)
|
ps->psglx->glXGetVideoSyncSGI = (f_GetVideoSync)
|
||||||
|
@ -4510,6 +4515,11 @@ vsync_opengl_oml_init(session_t *ps) {
|
||||||
if (!ensure_glx_context(ps))
|
if (!ensure_glx_context(ps))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!glx_hasglxext(ps, "GLX_OML_sync_control")) {
|
||||||
|
printf_errf("(): Your driver doesn't support OML_sync_control, giving up.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Get video sync functions
|
// Get video sync functions
|
||||||
if (!ps->psglx->glXGetSyncValuesOML)
|
if (!ps->psglx->glXGetSyncValuesOML)
|
||||||
ps->psglx->glXGetSyncValuesOML = (f_GetSyncValuesOML)
|
ps->psglx->glXGetSyncValuesOML = (f_GetSyncValuesOML)
|
||||||
|
@ -4535,6 +4545,11 @@ vsync_opengl_swc_init(session_t *ps) {
|
||||||
if (!ensure_glx_context(ps))
|
if (!ensure_glx_context(ps))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!glx_hasglxext(ps, "GLX_SGI_swap_control")) {
|
||||||
|
printf_errf("(): Your driver doesn't support SGI_swap_control, giving up.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!bkend_use_glx(ps)) {
|
if (!bkend_use_glx(ps)) {
|
||||||
printf_errf("(): I'm afraid glXSwapIntervalSGI wouldn't help if you are "
|
printf_errf("(): I'm afraid glXSwapIntervalSGI wouldn't help if you are "
|
||||||
"not using GLX backend. You could try, nonetheless.");
|
"not using GLX backend. You could try, nonetheless.");
|
||||||
|
@ -4563,6 +4578,11 @@ vsync_opengl_mswc_init(session_t *ps) {
|
||||||
if (!ensure_glx_context(ps))
|
if (!ensure_glx_context(ps))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!glx_hasglxext(ps, "GLX_MESA_swap_control")) {
|
||||||
|
printf_errf("(): Your driver doesn't support MESA_swap_control, giving up.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!bkend_use_glx(ps)) {
|
if (!bkend_use_glx(ps)) {
|
||||||
printf_errf("(): I'm afraid glXSwapIntervalMESA wouldn't help if you are "
|
printf_errf("(): I'm afraid glXSwapIntervalMESA wouldn't help if you are "
|
||||||
"not using GLX backend. You could try, nonetheless.");
|
"not using GLX backend. You could try, nonetheless.");
|
||||||
|
|
Loading…
Reference in New Issue