On Sep 17, 2013, at 12:55 PM, Roderick Colenbrander <thunderbird2k(a)gmail.com> wrote:
> ---
> dlls/winex11.drv/opengl.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
> index 5ec33c8..e28302e 100644
> --- a/dlls/winex11.drv/opengl.c
> +++ b/dlls/winex11.drv/opengl.c
> @@ -258,7 +258,8 @@ enum glx_swap_control_method
> {
> GLX_SWAP_CONTROL_NONE,
> GLX_SWAP_CONTROL_EXT,
> - GLX_SWAP_CONTROL_SGI
> + GLX_SWAP_CONTROL_SGI,
> + GLX_SWAP_CONTROL_MESA
> };
>
> /* X context to associate a struct gl_drawable to an hwnd */
> @@ -404,6 +405,7 @@ static void (*pglXFreeMemoryNV)(GLvoid *pointer);
>
> /* MESA GLX Extensions */
> static void (*pglXCopySubBufferMESA)(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
> +static int (*pglXSwapIntervalMESA)(unsigned int interval);
>
> /* Standard OpenGL */
> static void (*pglFinish)(void);
> @@ -650,6 +652,8 @@ static BOOL has_opengl(void)
> LOAD_FUNCPTR(glXCreateContextAttribsARB);
> /* EXT GLX Extension */
> LOAD_FUNCPTR(glXSwapIntervalEXT);
> + /* MESA GLX Extension */
> + LOAD_FUNCPTR(glXSwapIntervalMESA);
> /* SGI GLX Extension */
> LOAD_FUNCPTR(glXSwapIntervalSGI);
> /* NV GLX Extension */
> @@ -2963,6 +2967,10 @@ static BOOL X11DRV_wglSwapIntervalEXT(int interval)
> ret = !X11DRV_check_error();
> break;
>
> + case GLX_SWAP_CONTROL_MESA:
> + ret = !pglXSwapIntervalMESA(interval);
> + break;
> +
> case GLX_SWAP_CONTROL_SGI:
> /* wglSwapIntervalEXT considers an interval value of zero to mean that
> * vsync should be disabled, but glXSwapIntervalSGI considers such a
> @@ -3146,6 +3154,10 @@ static void X11DRV_WineGL_LoadExtensions(void)
> has_swap_control_tear = TRUE;
> }
> }
> + else if (has_extension( WineGLInfo.glxExtensions, "GLX_MESA_swap_control"))
> + {
> + swap_control_method = GLX_SWAP_CONTROL_MESA;
> + }
> else if (has_extension( WineGLInfo.glxExtensions, "GLX_SGI_swap_control"))
> {
> swap_control_method = GLX_SWAP_CONTROL_SGI;
> --
> 1.8.3.1
>
>
>