cec: lock in SyncedBuffer
authorLars Op den Kamp <lars@opdenkamp.eu>
Sun, 26 Feb 2012 21:28:04 +0000 (22:28 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sun, 26 Feb 2012 21:28:04 +0000 (22:28 +0100)
src/lib/adapter/USBCECAdapterCommunication.cpp
src/lib/platform/util/buffer.h

index 80670e42f5c981f01bb2b1aff2c2d6c0fec345f6..95c46946c70fd5638c4add7688e63e83929ec717 100644 (file)
@@ -320,7 +320,7 @@ bool CUSBCECAdapterCommunication::Read(CCECAdapterMessage &msg, uint32_t iTimeou
     if (iTimeout == 0 || !m_rcvCondition.Wait(m_mutex, m_bHasData, iTimeout))
       return false;
     m_inBuffer.Pop(buf);
-    m_bHasData = m_inBuffer.Size() > 0;
+    m_bHasData = !m_inBuffer.IsEmpty();
   }
 
   if (buf)
index ce6029c622cda793261f8de667e1cdc2af5c2ebc..56ffd6450225384359ce1cb4a159d784d3fb624e 100644 (file)
@@ -40,24 +40,32 @@ namespace PLATFORM
     struct SyncedBuffer
     {
     public:
-      SyncedBuffer(size_t iMaxSize = 100)
-      {
-        m_maxSize = iMaxSize;
-      }
+      SyncedBuffer(size_t iMaxSize = 100) :
+          m_maxSize(iMaxSize) {}
 
       virtual ~SyncedBuffer(void)
       {
-        CLockObject lock(m_mutex, true);
         Clear();
       }
 
       void Clear(void)
       {
+        CLockObject lock(m_mutex);
         while (!m_buffer.empty())
           m_buffer.pop();
       }
 
-      size_t Size(void) const { return m_buffer.size(); }
+      size_t Size(void)
+      {
+        CLockObject lock(m_mutex);
+        return m_buffer.size();
+      }
+
+      bool IsEmpty(void)
+      {
+        CLockObject lock(m_mutex);
+        return m_buffer.empty();
+      }
 
       bool Push(_BType entry)
       {