cec: added a timeout to StopThread()
authorLars Op den Kamp <lars@opdenkamp.eu>
Sun, 26 Feb 2012 22:17:21 +0000 (23:17 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sun, 26 Feb 2012 22:17:21 +0000 (23:17 +0100)
src/lib/platform/threads/threads.h

index 0efebdc2c0b47e14df475846e4f65ff92aa15dd1..c730da8256743c8132f7ef69279a365aa892854d 100644 (file)
@@ -103,7 +103,11 @@ namespace PLATFORM
       return bReturn;
     }
 
-    virtual bool StopThread(bool bWaitForExit = true)
+    /*!
+     * @brief Stop the thread
+     * @param iWaitMs negative = don't wait, 0 = infinite, or the amount of ms to wait
+     */
+    virtual bool StopThread(int iWaitMs = 5000)
     {
       bool bReturn(true);
       bool bRunning(false);
@@ -113,12 +117,17 @@ namespace PLATFORM
         m_bStop = true;
       }
 
-      if (bRunning && bWaitForExit)
+      if (bRunning && iWaitMs >= 0)
       {
-        void *retVal = NULL;
-        bReturn = ThreadsWait(m_thread, &retVal);
+        CLockObject lock(m_threadMutex);
+        bReturn = m_threadCondition.Wait(m_threadMutex, m_bStopped, iWaitMs);
+      }
+      else
+      {
+        bReturn = true;
       }
-      return true;
+
+      return bReturn;
     }
 
     virtual bool Sleep(uint32_t iTimeout)