From: Rémi Bernon rbernon@codeweavers.com
--- dlls/opengl32/make_opengl | 3 +-- dlls/opengl32/opengl_ext.h | 1 - dlls/opengl32/thunks.c | 8 ++++++++ dlls/opengl32/unix_thunks.c | 9 +-------- dlls/opengl32/unix_wgl.c | 22 ++++++++++++++++++++-- dlls/opengl32/wgl.c | 14 -------------- 6 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl index 5e269d89109..a5326d5f40d 100755 --- a/dlls/opengl32/make_opengl +++ b/dlls/opengl32/make_opengl @@ -161,7 +161,6 @@ my %manual_win_functions = ); my %manual_win_thunks = ( - "glGetIntegerv" => 1, "wglGetCurrentReadDCARB" => 1, "wglGetPixelFormat" => 1, "wglGetProcAddress" => 1, @@ -509,7 +508,7 @@ sub needs_wrapper($$) { my ($name, $func) = @_;
- return 1 if $name =~ /^glDebugMessageCallback|^glGetString/; + return 1 if $name =~ /^glDebugMessageCallback|^glGetString|^glGetIntegerv/;
# check if return value needs special handling (my $type = $func->[0]->textContent()) =~ s/ $//; diff --git a/dlls/opengl32/opengl_ext.h b/dlls/opengl32/opengl_ext.h index 6e069cf5bd5..3638494829c 100644 --- a/dlls/opengl32/opengl_ext.h +++ b/dlls/opengl32/opengl_ext.h @@ -101,7 +101,6 @@ static inline enum wgl_handle_type get_current_context_type(void)
extern int WINAPI wglDescribePixelFormat( HDC hdc, int ipfd, UINT cjpfd, PIXELFORMATDESCRIPTOR *ppfd );
-extern const GLuint *disabled_extensions_index(void) DECLSPEC_HIDDEN; extern BOOL check_extension_support( const char *extension, const char *available_extensions ) DECLSPEC_HIDDEN; extern char *build_extension_list(void) DECLSPEC_HIDDEN;
diff --git a/dlls/opengl32/thunks.c b/dlls/opengl32/thunks.c index 0a9fb8bb677..a5a117657fc 100644 --- a/dlls/opengl32/thunks.c +++ b/dlls/opengl32/thunks.c @@ -915,6 +915,14 @@ void WINAPI glGetFloatv( GLenum pname, GLfloat *data ) if ((status = UNIX_CALL( glGetFloatv, &args ))) WARN( "glGetFloatv returned %#x\n", status ); }
+void WINAPI glGetIntegerv( GLenum pname, GLint *data ) +{ + struct glGetIntegerv_params args = { .pname = pname, .data = data, }; + NTSTATUS status; + TRACE( "pname %d, data %p\n", pname, data ); + if ((status = UNIX_CALL( glGetIntegerv, &args ))) WARN( "glGetIntegerv returned %#x\n", status ); +} + void WINAPI glGetLightfv( GLenum light, GLenum pname, GLfloat *params ) { struct glGetLightfv_params args = { .light = light, .pname = pname, .params = params, }; diff --git a/dlls/opengl32/unix_thunks.c b/dlls/opengl32/unix_thunks.c index 375d1630cf9..41374ed9d74 100644 --- a/dlls/opengl32/unix_thunks.c +++ b/dlls/opengl32/unix_thunks.c @@ -18,6 +18,7 @@ extern NTSTATUS wgl_wglCreateContext( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS wgl_wglDeleteContext( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS wgl_wglMakeCurrent( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS wgl_wglShareLists( void *args ) DECLSPEC_HIDDEN; +extern NTSTATUS gl_glGetIntegerv( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS gl_glGetString( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS ext_glDebugMessageCallback( void *args ) DECLSPEC_HIDDEN; extern NTSTATUS ext_glDebugMessageCallbackAMD( void *args ) DECLSPEC_HIDDEN; @@ -906,14 +907,6 @@ static NTSTATUS gl_glGetFloatv( void *args ) return STATUS_SUCCESS; }
-static NTSTATUS gl_glGetIntegerv( void *args ) -{ - struct glGetIntegerv_params *params = args; - const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; - funcs->gl.p_glGetIntegerv( params->pname, params->data ); - return STATUS_SUCCESS; -} - static NTSTATUS gl_glGetLightfv( void *args ) { struct glGetLightfv_params *params = args; diff --git a/dlls/opengl32/unix_wgl.c b/dlls/opengl32/unix_wgl.c index a0207ad533a..3213bfcb6bc 100644 --- a/dlls/opengl32/unix_wgl.c +++ b/dlls/opengl32/unix_wgl.c @@ -229,7 +229,7 @@ static BOOL filter_extensions( const char *extensions, GLubyte **exts_list, GLui return (exts_list && *exts_list) || *disabled_exts; }
-const GLuint *disabled_extensions_index(void) +static const GLuint *disabled_extensions_index(void) { struct wgl_handle *ptr = get_current_context_ptr(); GLuint **disabled = &ptr->u.context->disabled_exts; @@ -286,6 +286,17 @@ BOOL check_extension_support( const char *extension, const char *available_exten return FALSE; }
+static void WINAPI wrap_glGetIntegerv( GLenum pname, GLint *data ) +{ + const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; + const GLuint *disabled; + + funcs->gl.p_glGetIntegerv( pname, data ); + + if (pname == GL_NUM_EXTENSIONS && (disabled = disabled_extensions_index())) + while (*disabled++ != ~0u) (*data)--; +} + static const GLubyte * WINAPI wrap_glGetString( GLenum name ) { const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; @@ -324,7 +335,7 @@ char *build_extension_list(void) GLint len = 0, capacity, i, extensions_count; char *extension, *tmp, *available_extensions;
- glGetIntegerv( GL_NUM_EXTENSIONS, &extensions_count ); + wrap_glGetIntegerv( GL_NUM_EXTENSIONS, &extensions_count ); capacity = 128 * extensions_count;
if (!(available_extensions = HeapAlloc( GetProcessHeap(), 0, capacity ))) return NULL; @@ -727,6 +738,13 @@ NTSTATUS wgl_wglShareLists( void *args ) return STATUS_SUCCESS; }
+NTSTATUS gl_glGetIntegerv( void *args ) +{ + struct glGetIntegerv_params *params = args; + wrap_glGetIntegerv( params->pname, params->data ); + return STATUS_SUCCESS; +} + NTSTATUS gl_glGetString( void *args ) { struct glGetString_params *params = args; diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 3aa37bd5cb4..a39bbcdd000 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -334,20 +334,6 @@ int WINAPI wglGetLayerPaletteEntries(HDC hdc, return 0; }
-void WINAPI glGetIntegerv(GLenum pname, GLint *data) -{ - struct glGetIntegerv_params args = { .pname = pname, .data = data, }; - const GLuint *disabled; - NTSTATUS status; - - TRACE( "pname %d, data %p\n", pname, data ); - - if ((status = UNIX_CALL( glGetIntegerv, &args ))) WARN( "glGetIntegerv returned %#x\n", status ); - - if (pname == GL_NUM_EXTENSIONS && (disabled = disabled_extensions_index())) - while (*disabled++ != ~0u) (*data)--; -} - static int compar(const void *elt_a, const void *elt_b) { return strcmp(((const OpenGL_extension *) elt_a)->name, ((const OpenGL_extension *) elt_b)->name);