diff options
author | Jeremy Huddleston <jeremyhu@apple.com> | 2011-05-31 13:01:05 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2011-06-03 12:12:31 -0400 |
commit | a4725afa0e77e9fcf6570001dc0de23a7a9ee6cb (patch) | |
tree | e4e16bee33ef3b205ddd11cf36e13171f43f75b7 | |
parent | 6a16c4c268962fd09a52e4e78116aaa3bb1c47d5 (diff) |
XQuartz: GLX: Create a new dispatch table rather than modifying the existing one
Fixes regression introduced by b0c665ac0fe6840dda581e4d0d0b76c703d62a7b
0 X11.bin 0x0000000100118293 __glXAquaScreenCreateContext + 684
1 X11.bin 0x00000001001315b0 DoCreateContext + 163
2 X11.bin 0x000000010013509f __glXDispatch + 211
3 X11.bin 0x00000001000c7dad Dispatch + 785
4 X11.bin 0x00000001000b97e5 dix_main + 1022
5 X11.bin 0x00000001000122bc server_thread + 50
6 libSystem.B.dylib 0x00007fff836554f6 _pthread_start + 331
7 libSystem.B.dylib 0x00007fff836553a9 thread_start + 13
http://lists.apple.com/archives/X11-users/2011/May/msg00045.html
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit 38df706c6b8a339c4267cae7be0881c4362f36da)
-rw-r--r-- | hw/xquartz/GL/indirect.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c index 1375beaa6..db4fe8321 100644 --- a/hw/xquartz/GL/indirect.c +++ b/hw/xquartz/GL/indirect.c @@ -682,7 +682,15 @@ GLuint __glFloorLog2(GLuint val) } static void setup_dispatch_table(void) { - struct _glapi_table *disp=_glapi_get_dispatch(); + static struct _glapi_table *disp = NULL; + + if(disp) { + _glapi_set_dispatch(disp); + return; + } + + disp=calloc(1,sizeof(struct _glapi_table)); + assert(disp); /* to update: * for f in $(grep 'define SET_' ../../../glx/dispatch.h | cut -f2 -d' ' | cut -f1 -d\( | sort -u); do grep -q $f indirect.c || echo $f ; done | grep -v by_offset | sed 's:SET_\(.*\)$:SET_\1(disp, gl\1)\;:' | pbcopy @@ -1626,4 +1634,6 @@ static void setup_dispatch_table(void) { SET_PixelTexGenParameterivSGIS(disp, glPixelTexGenParameterivSGIS); SET_PixelTexGenSGIX(disp, glPixelTexGenSGIX); #endif + + _glapi_set_dispatch(disp); } |