[PATCH] winex11.drv: Advertise some legacy WGL extensions in the GL_EXTENSIONS string.

Charles Davis cdavis5x at gmail.com
Tue Jul 23 22:26:31 CDT 2013


---
 dlls/winex11.drv/opengl.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index 9d58861..06e750f 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -396,9 +396,11 @@ static void (*pglXCopySubBufferMESA)(Display *dpy, GLXDrawable drawable, int x,
 /* Standard OpenGL */
 static void (*pglFinish)(void);
 static void (*pglFlush)(void);
+static GLubyte *(*pglGetString)(GLenum name);
 
 static void wglFinish(void);
 static void wglFlush(void);
+static GLubyte *wglGetString(GLenum name);
 
 /* check if the extension is present in the list */
 static BOOL has_extension( const char *list, const char *ext )
@@ -473,8 +475,10 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
     gl_renderer = (const char *)opengl_funcs.gl.p_glGetString(GL_RENDERER);
     WineGLInfo.glVersion = (const char *) opengl_funcs.gl.p_glGetString(GL_VERSION);
     str = (const char *) opengl_funcs.gl.p_glGetString(GL_EXTENSIONS);
-    WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+1);
+    WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+
+        sizeof(" WGL_EXT_extensions_string WGL_EXT_swap_control"));
     strcpy(WineGLInfo.glExtensions, str);
+    strcat(WineGLInfo.glExtensions, " WGL_EXT_extensions_string WGL_EXT_swap_control");
 
     /* Get the common GLX version supported by GLX client and server ( major/minor) */
     pglXQueryVersion(gdi_display, &WineGLInfo.glxVersion[0], &WineGLInfo.glxVersion[1]);
@@ -581,6 +585,7 @@ static BOOL has_opengl(void)
     do { p##func = opengl_funcs.gl.p_##func; opengl_funcs.gl.p_##func = w##func; } while(0)
     REDIRECT( glFinish );
     REDIRECT( glFlush );
+    REDIRECT( glGetString );
 #undef REDIRECT
 
     pglXGetProcAddressARB = wine_dlsym(opengl_handle, "glXGetProcAddressARB", NULL, 0);
@@ -1927,6 +1932,13 @@ static void wglFlush(void)
     if (escape.gl_drawable) ExtEscape( ctx->hdc, X11DRV_ESCAPE, sizeof(escape), (LPSTR)&escape, 0, NULL );
 }
 
+static GLubyte *wglGetString(GLenum name)
+{
+    if (name == GL_EXTENSIONS && WineGLInfo.glExtensions)
+        return (const GLubyte *)WineGLInfo.glExtensions;
+    return pglGetString(name);
+}
+
 /***********************************************************************
  *		X11DRV_wglCreateContextAttribsARB
  */
-- 
1.7.5.4




More information about the wine-patches mailing list