From: Rémi Bernon rbernon@codeweavers.com
--- dlls/opengl32/wgl.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 3b3eed46faf..4cde6b9e072 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -383,20 +383,21 @@ static GLubyte *filter_extensions_list( const char *extensions, const char *disa
static GLuint *filter_extensions_index( const char *disabled ) { - const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; GLuint *disabled_index; GLint extensions_count; unsigned int i = 0, j; const char *ext; + NTSTATUS status;
- if (!funcs->ext.p_glGetStringi) + struct glGetIntegerv_params glGetIntegerv_params = { - void **func_ptr = (void **)&funcs->ext.p_glGetStringi; - *func_ptr = funcs->wgl.p_wglGetProcAddress( "glGetStringi" ); - if (!funcs->ext.p_glGetStringi) return NULL; - } + .pname = GL_NUM_EXTENSIONS, + .data = &extensions_count, + }; + + if (!wglGetProcAddress( "glGetStringi" )) return NULL; + if ((status = UNIX_CALL( glGetIntegerv, &glGetIntegerv_params ))) WARN( "glGetIntegerv returned %#x\n", status );
- funcs->gl.p_glGetIntegerv( GL_NUM_EXTENSIONS, &extensions_count ); disabled_index = HeapAlloc( GetProcessHeap(), 0, extensions_count * sizeof(*disabled_index) ); if (!disabled_index) return NULL;
@@ -404,7 +405,14 @@ static GLuint *filter_extensions_index( const char *disabled )
for (j = 0; j < extensions_count; ++j) { - ext = (const char *)funcs->ext.p_glGetStringi( GL_EXTENSIONS, j ); + struct glGetStringi_params glGetStringi_params = + { + .name = GL_EXTENSIONS, + .index = j, + }; + if ((status = UNIX_CALL( glGetStringi, &glGetStringi_params ))) WARN( "glGetStringi returned %#x\n", status ); + ext = (const char *)glGetStringi_params.ret; + if (!has_extension( disabled, ext, strlen( ext ) )) { TRACE( "++ %s\n", ext ); @@ -528,7 +536,6 @@ static int compar(const void *elt_a, const void *elt_b) { /* Check if a GL extension is supported */ static BOOL check_extension_support( const char *extension, const char *available_extensions ) { - const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; size_t len;
TRACE("Checking for extension '%s'\n", extension); @@ -550,7 +557,7 @@ static BOOL check_extension_support( const char *extension, const char *availabl * Check if we are searching for a core GL function */ if (!strncmp( extension, "GL_VERSION_", 11 )) { - const GLubyte *gl_version = funcs->gl.p_glGetString(GL_VERSION); + const GLubyte *gl_version = glGetString( GL_VERSION ); const char *version = extension + 11; /* Move past 'GL_VERSION_' */
if (!gl_version)