cec: fix wait for ack
[deb_libcec.git] / src / lib / AdapterCommunication.cpp
index 627ce27a476ecfab70cc2186aafc0a6be61533ec..aeecf3ad2c5b8674e46687d10630cf60e8cfe33c 100644 (file)
@@ -128,16 +128,12 @@ void *CAdapterCommunication::Process(void)
 
   while (!IsStopped())
   {
-    bool bSignal(false);
     {
-      CLockObject lock(&m_mutex, true);
-      if (lock.IsLocked())
-        bSignal = ReadFromDevice(100);
+      CLockObject lock(&m_mutex);
+      if (ReadFromDevice(50))
+        m_rcvCondition.Signal();
     }
 
-    if (bSignal)
-      m_rcvCondition.Signal();
-
     if (!IsStopped())
       Sleep(50);
   }
@@ -193,7 +189,7 @@ bool CAdapterCommunication::Write(const cec_frame &data)
 
     m_controller->AddLog(CEC_LOG_DEBUG, "command sent");
 
-    CCondition::Sleep((uint32_t) data.size * (uint32_t)24 /*data*/ + (uint32_t)5 /*start bit (4.5 ms)*/ + (uint32_t)50 /* to be on the safe side */);
+    CCondition::Sleep((uint32_t) data.size * (uint32_t)24 /*data*/ + (uint32_t)5 /*start bit (4.5 ms)*/);
   }
 
   return true;