Revert "cec: fix timeout"
[deb_libcec.git] / src / lib / platform / threads.h
index 4ae5ac72557433464e96236e9821aee8ba414561..4161de3261b12d68d7c4c137dc923ab1281db404 100644 (file)
@@ -32,6 +32,7 @@
  */
 
 #include "os-dependent.h"
+#include <stdint.h>
 
 namespace CEC
 {
@@ -43,9 +44,10 @@ namespace CEC
     CCondition(void);
     virtual ~CCondition(void);
 
+    void Broadcast(void);
     void Signal(void);
-    bool Wait(CMutex *mutex, int64_t iTimeout);
-    static void Sleep(int iTimeout);
+    bool Wait(CMutex *mutex, uint32_t iTimeout = 0);
+    static void Sleep(uint32_t iTimeout);
 
   private:
     pthread_cond_t  m_cond;
@@ -67,7 +69,7 @@ namespace CEC
   class CLockObject
   {
   public:
-    CLockObject(CMutex *mutex);
+    CLockObject(CMutex *mutex, bool bTryLock = false);
     ~CLockObject(void);
 
     bool IsLocked(void) const { return m_bLocked; }
@@ -86,15 +88,21 @@ namespace CEC
     virtual ~CThread(void);
 
     virtual bool IsRunning(void) const { return m_bRunning; }
-    virtual bool CreateThread(void);
-    virtual void StopThread(bool bWaitForExit = true);
+    virtual bool CreateThread(bool bWait = true);
+    virtual bool StopThread(bool bWaitForExit = true);
+    virtual bool IsStopped(void) const { return m_bStop; };
+    virtual bool Sleep(uint32_t iTimeout);
 
     static void *ThreadHandler(CThread *thread);
     virtual void *Process(void) = 0;
 
   protected:
-    pthread_t m_thread;
-    bool      m_bRunning;
-    bool      m_bStop;
+    CCondition m_threadCondition;
+
+  private:
+    pthread_t  m_thread;
+    CMutex     m_threadMutex;
+    bool       m_bStop;
+    bool       m_bRunning;
   };
 };