X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fsemaphore.cpp;h=06777fb984872f9444dc4c3146208c3e50643ae3;hp=9139ce1429b8e3ab484c38256925c7d1619ca83d;hb=c6e82eb96aba6354a35143ccae6f0ae87b4c1204;hpb=e1ea831a640fba534e7e42e399f04cdf681ef8d3 diff --git a/source/core/semaphore.cpp b/source/core/semaphore.cpp index 9139ce1..06777fb 100644 --- a/source/core/semaphore.cpp +++ b/source/core/semaphore.cpp @@ -11,9 +11,9 @@ Distributed under the LGPL namespace Msp { -#ifndef WIN32 int Semaphore::wait(const Time::TimeDelta &d) { +#ifndef WIN32 Time::TimeStamp ts=Time::now()+d; timespec timeout; @@ -21,13 +21,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