diff options
author | José Fonseca <[email protected]> | 2009-02-23 11:52:59 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2009-02-23 11:52:59 +0000 |
commit | c7bbc9ad126b2b120407146c5aa9894f4487752e (patch) | |
tree | 972b9de0672c1f18e8750a36670ffecc3bb566b0 /src/gallium/state_trackers | |
parent | 1456af2f2d7602a1f1fca54d8fe625e25851e441 (diff) |
wgl: Enable the use of Win32 threads.
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r-- | src/gallium/state_trackers/wgl/SConscript | 1 | ||||
-rw-r--r-- | src/gallium/state_trackers/wgl/shared/stw_device.c | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/wgl/SConscript b/src/gallium/state_trackers/wgl/SConscript index d2c41f49c51..2141b02d688 100644 --- a/src/gallium/state_trackers/wgl/SConscript +++ b/src/gallium/state_trackers/wgl/SConscript @@ -14,6 +14,7 @@ if env['platform'] in ['windows']: env.Append(CPPDEFINES = [ '_GDI32_', # prevent wgl* being declared __declspec(dllimport) 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + 'WIN32_THREADS', # use Win32 thread API ]) sources = [ diff --git a/src/gallium/state_trackers/wgl/shared/stw_device.c b/src/gallium/state_trackers/wgl/shared/stw_device.c index 097e6ea62b3..0dca856d73b 100644 --- a/src/gallium/state_trackers/wgl/shared/stw_device.c +++ b/src/gallium/state_trackers/wgl/shared/stw_device.c @@ -27,6 +27,7 @@ #include <windows.h> +#include "glapi/glthread.h" #include "util/u_debug.h" #include "pipe/p_screen.h" @@ -35,6 +36,11 @@ #include "shared/stw_pixelformat.h" #include "shared/stw_public.h" +#ifdef WIN32_THREADS +extern _glthread_Mutex OneTimeLock; +extern void FreeAllTSD(void); +#endif + struct stw_device *stw_dev = NULL; @@ -73,6 +79,10 @@ st_init(const struct stw_winsys *stw_winsys) stw_dev->stw_winsys = stw_winsys; +#ifdef WIN32_THREADS + _glthread_INIT_MUTEX(OneTimeLock); +#endif + stw_dev->screen = stw_winsys->create_screen(); if(!stw_dev->screen) goto error1; @@ -114,6 +124,11 @@ st_cleanup(void) stw_dev->screen->destroy(stw_dev->screen); +#ifdef WIN32_THREADS + _glthread_DESTROY_MUTEX(OneTimeLock); + FreeAllTSD(); +#endif + #ifdef DEBUG debug_memory_end(stw_dev->memdbg_no); #endif |