[PATCH 3/5] opengl32: Introduce wrappers for glGetIntegerv and glGetStringi. (v2)

Matteo Bruni mbruni at codeweavers.com
Mon Feb 9 14:19:51 CST 2015


It should be a NOP change, the wrappers do nothing extra (yet).

v2: Don't check for glGetIntegerv in wglGetProcAddress.
---
 dlls/opengl32/make_opengl   |  1 +
 dlls/opengl32/opengl_norm.c |  9 ---------
 dlls/opengl32/wgl.c         | 36 +++++++++++++++++++++++++++---------
 3 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl
index 9ca5ebd..82c9919 100755
--- a/dlls/opengl32/make_opengl
+++ b/dlls/opengl32/make_opengl
@@ -237,6 +237,7 @@ sub GenerateThunk($$$$)
 
     return "" if $name eq "glDebugEntry";
     return "" if $name eq "glGetString";
+    return "" if $name eq "glGetIntegerv";
     return "" if $func_ref->[2] && $func_ref->[2]->[0] =~ /WGL_/;
 
     # If for opengl_norm.c, generate a nice heading otherwise Patrik won't be happy :-)
diff --git a/dlls/opengl32/opengl_norm.c b/dlls/opengl32/opengl_norm.c
index 52fb00b..34a4892 100644
--- a/dlls/opengl32/opengl_norm.c
+++ b/dlls/opengl32/opengl_norm.c
@@ -948,15 +948,6 @@ void WINAPI glGetFloatv( GLenum pname, GLfloat* data ) {
 }
 
 /***********************************************************************
- *              glGetIntegerv (OPENGL32.@)
- */
-void WINAPI glGetIntegerv( GLenum pname, GLint* data ) {
-  const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
-  TRACE("(%d, %p)\n", pname, data );
-  funcs->gl.p_glGetIntegerv( pname, data );
-}
-
-/***********************************************************************
  *              glGetLightfv (OPENGL32.@)
  */
 void WINAPI glGetLightfv( GLenum light, GLenum pname, GLfloat* params ) {
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 6ff54f0..d3b69a3 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -687,27 +687,42 @@ int WINAPI wglGetLayerPaletteEntries(HDC hdc,
   return 0;
 }
 
+void WINAPI glGetIntegerv(GLenum pname, GLint *data)
+{
+    const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
+
+    TRACE("(%d, %p)\n", pname, data);
+    funcs->gl.p_glGetIntegerv(pname, data);
+}
+
+static const GLubyte * WINAPI glGetStringi(GLenum name, GLuint index)
+{
+    const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
+
+    TRACE("(%d, %d)\n", name, index);
+    if (!funcs->ext.p_glGetStringi)
+    {
+        void **func_ptr = (void **)&funcs->ext.p_glGetStringi;
+
+        *func_ptr = funcs->wgl.p_wglGetProcAddress("glGetStringi");
+    }
+
+    return funcs->ext.p_glGetStringi(name, index);
+}
+
 /* check if the extension is present in the list */
 static BOOL has_extension( const char *list, const char *ext, size_t len )
 {
     if (!list)
     {
-        const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
         const char *gl_ext;
         unsigned int i;
         GLint extensions_count;
 
-        if (!funcs->ext.p_glGetStringi)
-        {
-            void **func_ptr = (void **)&funcs->ext.p_glGetStringi;
-
-            *func_ptr = funcs->wgl.p_wglGetProcAddress("glGetStringi");
-        }
-
         glGetIntegerv(GL_NUM_EXTENSIONS, &extensions_count);
         for (i = 0; i < extensions_count; ++i)
         {
-            gl_ext = (const char *)funcs->ext.p_glGetStringi(GL_EXTENSIONS, i);
+            gl_ext = (const char *)glGetStringi(GL_EXTENSIONS, i);
             if (!strncmp(gl_ext, ext, len) && !gl_ext[len])
                 return TRUE;
         }
@@ -834,6 +849,9 @@ PROC WINAPI wglGetProcAddress( LPCSTR name )
         *func_ptr = driver_func;
     }
 
+    if (!strcmp(name, "glGetStringi"))
+        return (void *)glGetStringi;
+
     TRACE("returning %s -> %p\n", name, ext_ret->func);
     return ext_ret->func;
 }
-- 
2.0.5




More information about the wine-patches mailing list