aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include
diff options
context:
space:
mode:
Diffstat (limited to 'OpenAL32/Include')
-rw-r--r--OpenAL32/Include/threads.h32
1 files changed, 22 insertions, 10 deletions
diff --git a/OpenAL32/Include/threads.h b/OpenAL32/Include/threads.h
index 847ade7f..f0ee1b5c 100644
--- a/OpenAL32/Include/threads.h
+++ b/OpenAL32/Include/threads.h
@@ -6,10 +6,10 @@
enum {
althrd_success = 0,
- althrd_timeout,
- althrd_error,
+ althrd_nomem,
+ althrd_timedout,
althrd_busy,
- althrd_nomem
+ althrd_error
};
enum {
@@ -134,9 +134,15 @@ inline int althrd_sleep(const struct timespec *ts, struct timespec *rem)
inline int almtx_lock(almtx_t *mtx)
{
- if(!mtx) return althrd_error;
- pthread_mutex_lock(mtx);
- return althrd_success;
+ int ret = EINVAL;
+ if(mtx != NULL)
+ ret = pthread_mutex_lock(mtx);
+ switch(ret)
+ {
+ case 0: return althrd_success;
+ case EAGAIN: return althrd_busy;
+ }
+ return althrd_error;
}
inline int almtx_unlock(almtx_t *mtx)
@@ -148,10 +154,16 @@ inline int almtx_unlock(almtx_t *mtx)
inline int almtx_trylock(almtx_t *mtx)
{
- if(!mtx) return althrd_error;
- if(pthread_mutex_trylock(mtx) != 0)
- return althrd_busy;
- return althrd_success;
+ int ret = EINVAL;
+ if(mtx != NULL)
+ ret = pthread_mutex_trylock(mtx);
+ switch(ret)
+ {
+ case 0: return althrd_success;
+ case EAGAIN:
+ case EBUSY: return althrd_busy;
+ }
+ return althrd_error;
}
#endif