summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@apple.com>2011-05-31 13:01:05 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2011-06-01 20:41:11 -0700
commit38df706c6b8a339c4267cae7be0881c4362f36da (patch)
treeb50e48702b9169f5ea7d3138019837f41fe4a696
parentc5b72fd350bbdfd1facd0ddd5085f238c4cf252a (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>
-rw-r--r--hw/xquartz/GL/indirect.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
index 6da27c78a..d15b9a3df 100644
--- a/hw/xquartz/GL/indirect.c
+++ b/hw/xquartz/GL/indirect.c
@@ -666,7 +666,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
@@ -1610,4 +1618,6 @@ static void setup_dispatch_table(void) {
SET_PixelTexGenParameterivSGIS(disp, glPixelTexGenParameterivSGIS);
SET_PixelTexGenSGIX(disp, glPixelTexGenSGIX);
#endif
+
+ _glapi_set_dispatch(disp);
}