From: Rémi Bernon rbernon@codeweavers.com
--- dlls/opengl32/wgl.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 2e85e639f51..3b3eed46faf 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -487,15 +487,17 @@ void WINAPI glGetIntegerv(GLenum pname, GLint *data)
const GLubyte * WINAPI glGetStringi(GLenum name, GLuint index) { - const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; + struct glGetStringi_params args = + { + .name = name, + .index = index, + }; + NTSTATUS status;
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"); - } + /* make sure unix pointer is loaded */ + if (!wglGetProcAddress( "glGetStringi" )) return NULL;
if (name == GL_EXTENSIONS) { @@ -509,10 +511,13 @@ const GLubyte * WINAPI glGetStringi(GLenum name, GLuint index)
while (index + disabled_count >= *disabled_exts++) disabled_count++; - return funcs->ext.p_glGetStringi(name, index + disabled_count); + + args.index = index + disabled_count; } } - return funcs->ext.p_glGetStringi(name, index); + + if ((status = UNIX_CALL( glGetStringi, &args ))) WARN( "glGetStringi returned %#x\n", status ); + return args.ret; }
static int compar(const void *elt_a, const void *elt_b) {