platform: added CCondition::Wait() without a timeout for windows. fixes compilation...
authorLars Op den Kamp <lars@opdenkamp.eu>
Tue, 14 Feb 2012 10:39:56 +0000 (11:39 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Tue, 14 Feb 2012 10:39:56 +0000 (11:39 +0100)
src/lib/platform/windows/os-threads.h

index 52bd4bc11ab946b3018bd522b01b64b0ace7cd9b..e082691e24582b1afb6208488d8aa8118ecf8680 100644 (file)
@@ -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);
       }