diff options
author | José Fonseca <[email protected]> | 2011-03-06 09:11:59 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2011-03-06 09:11:59 +0000 |
commit | b531b01b707370df2cf013fc18c70eda62f5b4be (patch) | |
tree | 9891787833c6fc6b7d3a8e7749edb72323bc0bfe /src/mapi | |
parent | e640eec9ba9e2ff0e462671f6a3c548d2e0c40cf (diff) |
mapi: _glthread_DECLARE_STATIC_MUTEX is not broken on Windows.
Diffstat (limited to 'src/mapi')
-rw-r--r-- | src/mapi/mapi/u_current.c | 12 | ||||
-rw-r--r-- | src/mapi/mapi/u_thread.c | 9 | ||||
-rw-r--r-- | src/mapi/mapi/u_thread.h | 2 |
3 files changed, 5 insertions, 18 deletions
diff --git a/src/mapi/mapi/u_current.c b/src/mapi/mapi/u_current.c index 7946d2a2741..21a07abbae5 100644 --- a/src/mapi/mapi/u_current.c +++ b/src/mapi/mapi/u_current.c @@ -144,15 +144,7 @@ u_current_init_tsd(void) /** * Mutex for multithread check. */ -#ifdef WIN32 -/* _glthread_DECLARE_STATIC_MUTEX is broken on windows. There will be race! */ -#define CHECK_MULTITHREAD_LOCK() -#define CHECK_MULTITHREAD_UNLOCK() -#else u_mutex_declare_static(ThreadCheckMutex); -#define CHECK_MULTITHREAD_LOCK() u_mutex_lock(ThreadCheckMutex) -#define CHECK_MULTITHREAD_UNLOCK() u_mutex_unlock(ThreadCheckMutex) -#endif /** * We should call this periodically from a function such as glXMakeCurrent @@ -167,7 +159,7 @@ u_current_init(void) if (ThreadSafe) return; - CHECK_MULTITHREAD_LOCK(); + u_mutex_lock(ThreadCheckMutex); if (firstCall) { u_current_init_tsd(); @@ -179,7 +171,7 @@ u_current_init(void) u_current_set(NULL); u_current_set_user(NULL); } - CHECK_MULTITHREAD_UNLOCK(); + u_mutex_unlock(ThreadCheckMutex); } #else diff --git a/src/mapi/mapi/u_thread.c b/src/mapi/mapi/u_thread.c index 138db47b5cd..12e748fe8ba 100644 --- a/src/mapi/mapi/u_thread.c +++ b/src/mapi/mapi/u_thread.c @@ -113,11 +113,6 @@ u_tsd_set(struct u_tsd *tsd, void *ptr) */ #ifdef WIN32 -static void InsteadOf_exit(int nCode) -{ - DWORD dwErr = GetLastError(); -} - unsigned long u_thread_self(void) { @@ -131,7 +126,7 @@ u_tsd_init(struct u_tsd *tsd) tsd->key = TlsAlloc(); if (tsd->key == TLS_OUT_OF_INDEXES) { perror(INIT_TSD_ERROR); - InsteadOf_exit(-1); + exit(-1); } tsd->initMagic = INIT_MAGIC; } @@ -168,7 +163,7 @@ u_tsd_set(struct u_tsd *tsd, void *ptr) } if (TlsSetValue(tsd->key, ptr) == 0) { perror(SET_TSD_ERROR); - InsteadOf_exit(-1); + exit(-1); } } diff --git a/src/mapi/mapi/u_thread.h b/src/mapi/mapi/u_thread.h index 92a0a3916d0..1cc8be3fa3f 100644 --- a/src/mapi/mapi/u_thread.h +++ b/src/mapi/mapi/u_thread.h @@ -97,7 +97,7 @@ typedef CRITICAL_SECTION u_mutex; /* http://locklessinc.com/articles/pthreads_on_windows/ */ #define u_mutex_declare_static(name) \ - /* static */ u_mutex name = {(void*)-1, -1, 0, 0, 0, 0} + static u_mutex name = {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0} #define u_mutex_init(name) InitializeCriticalSection(&name) #define u_mutex_destroy(name) DeleteCriticalSection(&name) |