Revert "cec: use CCECCommandHandler::ActivateSource() instead of TransmitActiveSource...
[deb_libcec.git] / src / lib / platform / threads.h
index 8b0729db4cf045dccbf3f1bf6777b5d33f6e0df2..a258081ccef8bbdf6a5bc8f33826fbaf26ae6c84 100644 (file)
@@ -46,8 +46,8 @@ namespace CEC
 
     void Broadcast(void);
     void Signal(void);
-    bool Wait(CMutex *mutex, int64_t iTimeout);
-    static void Sleep(int64_t iTimeout);
+    bool Wait(CMutex *mutex, uint32_t iTimeout = 0);
+    static void Sleep(uint32_t iTimeout);
 
   private:
     pthread_cond_t  m_cond;
@@ -56,7 +56,7 @@ namespace CEC
   class CMutex
   {
   public:
-    CMutex(void);
+    CMutex(bool bRecursive = true);
     virtual ~CMutex(void);
 
     bool TryLock(void);
@@ -64,12 +64,15 @@ namespace CEC
     void Unlock(void);
 
     pthread_mutex_t m_mutex;
+
+  private:
+    static pthread_mutexattr_t *GetMutexAttribute();
   };
 
   class CLockObject
   {
   public:
-    CLockObject(CMutex *mutex);
+    CLockObject(CMutex *mutex, bool bTryLock = false);
     ~CLockObject(void);
 
     bool IsLocked(void) const { return m_bLocked; }
@@ -88,18 +91,21 @@ namespace CEC
     virtual ~CThread(void);
 
     virtual bool IsRunning(void) const { return m_bRunning; }
-    virtual bool CreateThread(void);
+    virtual bool CreateThread(bool bWait = true);
     virtual bool StopThread(bool bWaitForExit = true);
-    virtual bool Sleep(uint64_t iTimeout);
+    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:
+    CCondition m_threadCondition;
+
+  private:
     pthread_t  m_thread;
     CMutex     m_threadMutex;
-    CCondition m_threadCondition;
-    bool       m_bRunning;
     bool       m_bStop;
+    bool       m_bRunning;
   };
 };