From 85c21ae40940d6c54e36b5822e9ac1a517185b07 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 25 Mar 2015 12:29:19 +0100 Subject: vo_opengl: cleanup swap_control extension loading Instead of somehow looking for the substring "_swap_control" and trying to several arbitrary function names, do it cleanly. The old approach has the problem that it's not very exact, and may even load a pointer to a function which doesn't exist. (Some GL implementations like Mesa return function pointers even the functions which don't exist, and calling them crashes.) I couldn't find any evidence that glXSwapInterval, wglSwapIntervalSGI, or wglSwapInterval actually exist, so don't include them. They were carried over from MPlayer times. To make diagnostics easier, print a warning in verbose mode if the function could not be loaded. --- video/out/gl_common.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'video/out/gl_common.c') diff --git a/video/out/gl_common.c b/video/out/gl_common.c index 638d757eea..14d7649e8b 100644 --- a/video/out/gl_common.c +++ b/video/out/gl_common.c @@ -243,13 +243,19 @@ static const struct gl_functions gl_functions[] = { .provides = MPGL_CAP_TEX_RG, }, // Swap control, always an OS specific extension + // The OSX code loads this manually. { - .extension = "_swap_control", + .extension = "GLX_SGI_swap_control", .functions = (const struct gl_function[]) { - DEF_FN_NAMES(SwapInterval, "glXSwapIntervalSGI", "glXSwapInterval", - "wglSwapIntervalSGI", "wglSwapInterval", - "wglSwapIntervalEXT"), - {0} + DEF_FN_NAMES(SwapInterval, "glXSwapIntervalSGI"), + {0}, + }, + }, + { + .extension = "WGL_EXT_swap_control", + .functions = (const struct gl_function[]) { + DEF_FN_NAMES(SwapInterval, "wglSwapIntervalEXT"), + {0}, }, }, { -- cgit v1.2.3