]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/semaphore.cpp
Win32 compilation fixes
[libs/core.git] / source / core / semaphore.cpp
index 9139ce1429b8e3ab484c38256925c7d1619ca83d..7006eafc51ae5e8c43d938c9f8d04824fbc5e03c 100644 (file)
@@ -7,13 +7,14 @@ Distributed under the LGPL
 #include <errno.h>
 #include "semaphore.h"
 #include "../time/timestamp.h"
+#include "../time/units.h"
 #include "../time/utils.h"
 
 namespace Msp {
 
-#ifndef WIN32
 int Semaphore::wait(const Time::TimeDelta &d)
 {
+#ifndef WIN32
        Time::TimeStamp ts=Time::now()+d;
 
        timespec timeout;
@@ -21,13 +22,15 @@ int Semaphore::wait(const Time::TimeDelta &d)
        timeout.tv_nsec=(ts.raw()%1000000)*1000;
 
        MutexLock l(mutex);
-       int r=pthread_cond_timedwait(&cond, &mutex.mutex, &timeout);
+       int r=pthread_cond_timedwait(&sem, &mutex.mutex, &timeout);
        if(r==ETIMEDOUT)
                return 1;
        else if(r)
                return -1;
        return 0;
-}
+#else
+       return WaitForSingleObject(sem, (DWORD)(d/Time::usec))==WAIT_OBJECT_0;
 #endif
+}
 
 } // namespace Msp