summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Alc/ALc.c30
-rw-r--r--OpenAL32/Include/alMain.h27
2 files changed, 32 insertions, 25 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index cc3a93a4..f3dcee39 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -1022,6 +1022,36 @@ ALboolean IsValidChannels(ALenum channels)
return AL_FALSE;
}
+
+#ifndef _WIN32
+void InitializeCriticalSection(CRITICAL_SECTION *cs)
+{
+ pthread_mutexattr_t attrib;
+ int ret;
+
+ ret = pthread_mutexattr_init(&attrib);
+ assert(ret == 0);
+
+ ret = pthread_mutexattr_settype(&attrib, PTHREAD_MUTEX_RECURSIVE);
+#ifdef HAVE_PTHREAD_NP_H
+ if(ret != 0)
+ ret = pthread_mutexattr_setkind_np(&attrib, PTHREAD_MUTEX_RECURSIVE);
+#endif
+ assert(ret == 0);
+ ret = pthread_mutex_init(cs, &attrib);
+ assert(ret == 0);
+
+ pthread_mutexattr_destroy(&attrib);
+}
+void DeleteCriticalSection(CRITICAL_SECTION *cs)
+{
+ int ret;
+ ret = pthread_mutex_destroy(cs);
+ assert(ret == 0);
+}
+#endif
+
+
static void LockLists(void)
{
EnterCriticalSection(&ListLock);
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 9d0ee4f9..184c3249 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -213,6 +213,8 @@ typedef pthread_key_t tls_type;
#define tls_set(x, a) pthread_setspecific((x), (a))
typedef pthread_mutex_t CRITICAL_SECTION;
+void InitializeCriticalSection(CRITICAL_SECTION *cs);
+void DeleteCriticalSection(CRITICAL_SECTION *cs);
static __inline void EnterCriticalSection(CRITICAL_SECTION *cs)
{
int ret;
@@ -225,31 +227,6 @@ static __inline void LeaveCriticalSection(CRITICAL_SECTION *cs)
ret = pthread_mutex_unlock(cs);
assert(ret == 0);
}
-static __inline void InitializeCriticalSection(CRITICAL_SECTION *cs)
-{
- pthread_mutexattr_t attrib;
- int ret;
-
- ret = pthread_mutexattr_init(&attrib);
- assert(ret == 0);
-
- ret = pthread_mutexattr_settype(&attrib, PTHREAD_MUTEX_RECURSIVE);
-#ifdef HAVE_PTHREAD_NP_H
- if(ret != 0)
- ret = pthread_mutexattr_setkind_np(&attrib, PTHREAD_MUTEX_RECURSIVE);
-#endif
- assert(ret == 0);
- ret = pthread_mutex_init(cs, &attrib);
- assert(ret == 0);
-
- pthread_mutexattr_destroy(&attrib);
-}
-static __inline void DeleteCriticalSection(CRITICAL_SECTION *cs)
-{
- int ret;
- ret = pthread_mutex_destroy(cs);
- assert(ret == 0);
-}
/* NOTE: This wrapper isn't quite accurate as it returns an ALuint, as opposed
* to the expected DWORD. Both are defined as unsigned 32-bit types, however.