diff options
author | Chris Robinson <[email protected]> | 2014-04-16 08:21:45 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-04-16 08:21:45 -0700 |
commit | 8cc3d05949b9c2750a5460488cac58c82174e85c (patch) | |
tree | 70a70b17cfb218e25cb2f48145b7140ea1bb24ab /Alc | |
parent | 2149ccd985427e1ad0db6d8e3e3769a1370f92f9 (diff) |
Fix some almtx_ return values
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/threads.c | 17 |
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 |