aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-04-16 08:21:45 -0700
committerChris Robinson <[email protected]>2014-04-16 08:21:45 -0700
commit8cc3d05949b9c2750a5460488cac58c82174e85c (patch)
tree70a70b17cfb218e25cb2f48145b7140ea1bb24ab /Alc
parent2149ccd985427e1ad0db6d8e3e3769a1370f92f9 (diff)
Fix some almtx_ return values
Diffstat (limited to 'Alc')
-rw-r--r--Alc/threads.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/Alc/threads.c b/Alc/threads.c
index 5361e649..1dece664 100644
--- a/Alc/threads.c
+++ b/Alc/threads.c
@@ -184,7 +184,10 @@ int almtx_timedlock(almtx_t *mtx, const struct timespec *ts)
{
DWORD now = timeGetTime();
if(now-start >= timelen)
+ {
+ ret = althrd_timedout;
break;
+ }
SwitchToThread();
}
@@ -331,12 +334,20 @@ void almtx_destroy(almtx_t *mtx)
int almtx_timedlock(almtx_t *mtx, const struct timespec *ts)
{
+ int ret;
+
if(!mtx || !ts)
return althrd_error;
- if(pthread_mutex_timedlock(mtx, ts) != 0)
- return althrd_busy;
- return althrd_success;
+ ret = pthread_mutex_timedlock(mtx, ts);
+ switch(ret)
+ {
+ case 0: return althrd_success;
+ case ETIMEDOUT: return althrd_timedout;
+ case EAGAIN:
+ case EBUSY: return althrd_busy;
+ }
+ return althrd_error;
}
#endif