diff options
-rw-r--r-- | src/glx/apple/apple_glapi.c | 12 | ||||
-rw-r--r-- | src/mapi/glapi/gen/gl_gentable.py | 14 | ||||
-rw-r--r-- | src/mapi/glapi/glapi.h | 3 |
3 files changed, 22 insertions, 7 deletions
diff --git a/src/glx/apple/apple_glapi.c b/src/glx/apple/apple_glapi.c index 4d19f7f6a3e..f2248ab01a2 100644 --- a/src/glx/apple/apple_glapi.c +++ b/src/glx/apple/apple_glapi.c @@ -41,7 +41,6 @@ #include "main/glheader.h" #include "glapi.h" #include "glapitable.h" -#include "main/dispatch.h" #include "apple_glx.h" #include "apple_xgl_api.h" @@ -61,12 +60,11 @@ static void _apple_glapi_create_table(void) { assert(__applegl_api); memcpy(__applegl_api, __ogl_framework_api, sizeof(struct _glapi_table)); - SET_ReadPixels(__applegl_api, __applegl_glReadPixels); - SET_CopyPixels(__applegl_api, __applegl_glCopyPixels); - SET_CopyColorTable(__applegl_api, __applegl_glCopyColorTable); - SET_DrawBuffer(__applegl_api, __applegl_glDrawBuffer); - SET_DrawBuffers(__applegl_api, __applegl_glDrawBuffers); - SET_Viewport(__applegl_api, __applegl_glViewport); + _glapi_table_patch(__applegl_api, "ReadPixels", __applegl_glReadPixels); + _glapi_table_patch(__applegl_api, "CopyPixels", __applegl_glCopyPixels); + _glapi_table_patch(__applegl_api, "CopyColorTable", __applegl_glCopyColorTable); + _glapi_table_patch(__applegl_api, "DrawBuffers", __applegl_glDrawBuffer); + _glapi_table_patch(__applegl_api, "Viewport", __applegl_glViewport); } void apple_glapi_set_dispatch(void) { diff --git a/src/mapi/glapi/gen/gl_gentable.py b/src/mapi/glapi/gen/gl_gentable.py index 2f54d1d5792..50153bbabd5 100644 --- a/src/mapi/glapi/gen/gl_gentable.py +++ b/src/mapi/glapi/gen/gl_gentable.py @@ -56,6 +56,7 @@ header = """/* GLXEXT is the define used in the xserver when the GLX extension i #endif #include <stdlib.h> #include <stdio.h> +#include <string.h> #include "main/glheader.h" @@ -144,6 +145,19 @@ _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) { return disp; } + +void + _glapi_table_patch(struct _glapi_table *table, const char *name, void *wrapper) +{ + for (int func_index = 0; func_index < GLAPI_TABLE_COUNT; ++func_index) { + if (!strcmp(_glapi_table_func_names[func_index], name)) { + ((void **)table)[func_index] = wrapper; + return; + } + } + fprintf(stderr, "could not patch %s in dispatch table\\n", name); +} + """ diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h index f1ad4c1b5e8..d5d4e0a03a6 100644 --- a/src/mapi/glapi/glapi.h +++ b/src/mapi/glapi/glapi.h @@ -161,6 +161,9 @@ _glapi_get_proc_name(unsigned int offset); #if defined(GLX_USE_APPLEGL) || defined(GLX_USE_WINDOWSGL) _GLAPI_EXPORT struct _glapi_table * _glapi_create_table_from_handle(void *handle, const char *symbol_prefix); + +_GLAPI_EXPORT void +_glapi_table_patch(struct _glapi_table *, const char *name, void *wrapper); #endif |