cec: refactored threading/locking - added windows native instead of pthread-win32...
[deb_libcec.git] / src / lib / platform / buffer.h
similarity index 89%
rename from src/lib/util/buffer.h
rename to src/lib/platform/buffer.h
index e0afddfa16d1daaf52af97f6fee5fbd5c7e4b0e9..227b7565edcd7a438991d12b6355301336df65f9 100644 (file)
  *     http://www.pulse-eight.net/
  */
 
-#include "../platform/os-dependent.h"
+#include "os.h"
 #include <queue>
 
-namespace CEC
+namespace PLATFORM
 {
   template<typename _BType>
-    struct CecBuffer
+    struct SyncedBuffer
     {
     public:
-      CecBuffer(size_t iMaxSize = 100)
+      SyncedBuffer(size_t iMaxSize = 100)
       {
         m_maxSize = iMaxSize;
       }
 
-      virtual ~CecBuffer(void)
+      virtual ~SyncedBuffer(void)
       {
+        CLockObject lock(m_mutex, true);
         Clear();
       }
 
@@ -60,7 +61,7 @@ namespace CEC
 
       bool Push(_BType entry)
       {
-        CLockObject lock(&m_mutex);
+        CLockObject lock(m_mutex);
         if (m_buffer.size() == m_maxSize)
           return false;
 
@@ -71,7 +72,7 @@ namespace CEC
       bool Pop(_BType &entry)
       {
         bool bReturn(false);
-        CLockObject lock(&m_mutex);
+        CLockObject lock(m_mutex);
         if (!m_buffer.empty())
         {
           entry = m_buffer.front();