X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fplatform%2Fwindows%2Fos-threads.h;h=e082691e24582b1afb6208488d8aa8118ecf8680;hb=fd09ec0240599e6db5ae60bff0ee2d9da044c08d;hp=52bd4bc11ab946b3018bd522b01b64b0ace7cd9b;hpb=78850b01b90c5aaacc49f523270fbbdcd7e600a7;p=deb_libcec.git diff --git a/src/lib/platform/windows/os-threads.h b/src/lib/platform/windows/os-threads.h index 52bd4bc..e082691 100644 --- a/src/lib/platform/windows/os-threads.h +++ b/src/lib/platform/windows/os-threads.h @@ -116,17 +116,36 @@ namespace PLATFORM ::SetEvent(m_conditionPreVista); } + bool Wait(mutex_t &mutex) + { + if (m_bOnVista) + { + return ((*g_SleepConditionVariableCS)(m_conditionVista, mutex, INFINITE) ? true : false); + } + else + { + ::ResetEvent(m_conditionPreVista); + MutexUnlock(mutex); + DWORD iWaitReturn = ::WaitForSingleObject(m_conditionPreVista, 1000); + MutexLock(mutex); + return (iWaitReturn == 0); + } + } + bool Wait(mutex_t &mutex, uint32_t iTimeoutMs) { + if (iTimeoutMs == 0) + return Wait(mutex); + if (m_bOnVista) { - return ((*g_SleepConditionVariableCS)(m_conditionVista, mutex, iTimeoutMs <= 0 ? INFINITE : iTimeoutMs) ? true : false); + return ((*g_SleepConditionVariableCS)(m_conditionVista, mutex, iTimeoutMs) ? true : false); } else { ::ResetEvent(m_conditionPreVista); MutexUnlock(mutex); - DWORD iWaitReturn = ::WaitForSingleObject(m_conditionPreVista, iTimeoutMs <= 0 ? 1000 : iTimeoutMs); + DWORD iWaitReturn = ::WaitForSingleObject(m_conditionPreVista, iTimeoutMs); MutexLock(mutex); return (iWaitReturn == 0); }