wgl: Enable the use of Win32 threads.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 23 Feb 2009 11:52:59 +0000 (11:52 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 23 Feb 2009 11:52:59 +0000 (11:52 +0000)
src/gallium/state_trackers/wgl/SConscript
src/gallium/state_trackers/wgl/shared/stw_device.c
src/mesa/SConscript

index d2c41f49c51f9aba2ac2200be0bf52f1f2b2f1cc..2141b02d688af237796742ff928f67cf74cbfd38 100644 (file)
@@ -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 = [
index 097e6ea62b33257690987a92986dc8e87023511c..0dca856d73bd65223f478c11a25a873e9d36f878 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <windows.h>
 
+#include "glapi/glthread.h"
 #include "util/u_debug.h"
 #include "pipe/p_screen.h"
 
 #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
index a878d31dbb5129c3532f88ca43e799c487915f33..5cf3bfd9d5435ea199829ffbf89831f99afac4da 100644 (file)
@@ -16,6 +16,7 @@ if env['platform'] != 'winddk':
                env.Append(CPPDEFINES = [
                        '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers
                        'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers 
+                       'WIN32_THREADS', # use Win32 thread API
                ])       
 
        #