summaryrefslogtreecommitdiff
path: root/src/mapi
diff options
context:
space:
mode:
authorJosé Fonseca <jose.r.fonseca@gmail.com>2011-03-06 09:11:59 +0000
committerJosé Fonseca <jose.r.fonseca@gmail.com>2011-03-06 09:11:59 +0000
commitb531b01b707370df2cf013fc18c70eda62f5b4be (patch)
tree9891787833c6fc6b7d3a8e7749edb72323bc0bfe /src/mapi
parente640eec9ba9e2ff0e462671f6a3c548d2e0c40cf (diff)
mapi: _glthread_DECLARE_STATIC_MUTEX is not broken on Windows.
Diffstat (limited to 'src/mapi')
-rw-r--r--src/mapi/mapi/u_current.c12
-rw-r--r--src/mapi/mapi/u_thread.c9
-rw-r--r--src/mapi/mapi/u_thread.h2
3 files changed, 5 insertions, 18 deletions
diff --git a/src/mapi/mapi/u_current.c b/src/mapi/mapi/u_current.c
index 7946d2a274..21a07abbae 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 138db47b5c..12e748fe8b 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 92a0a3916d..1cc8be3fa3 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)