cec: fix timeout
authorLars Op den Kamp <lars@opdenkamp.eu>
Sat, 8 Oct 2011 18:22:59 +0000 (20:22 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sat, 8 Oct 2011 18:22:59 +0000 (20:22 +0200)
src/lib/AdapterCommunication.cpp
src/lib/CECProcessor.cpp
src/lib/platform/threads.cpp

index cc83320aae0084e55b7499b360a3e5883f8225e2..a281ecde17d1c0c49de4642320591ed64076cd46 100644 (file)
@@ -188,6 +188,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);
   }
 
   return true;
index 964f359bce3d11f875f9ea1d1863290d2c292451..997de65a9f0a0bb0a5d455c67c55a9bc17a7adab 100644 (file)
@@ -241,8 +241,6 @@ bool CCECProcessor::TransmitFormatted(const cec_frame &data, bool bWaitForAck /*
   if (!m_communication || !m_communication->Write(data))
     return false;
 
-  CCondition::Sleep((uint32_t) data.size * (uint32_t)24 /*data*/ + (uint32_t)5 /*start bit (4.5 ms)*/);
-
   if (bWaitForAck)
   {
     uint64_t now = GetTimeMs();
index 8ba391920feb2695326b52ca6e7467f033771dd1..d8ac5a7b0428df70a810eed5357c117ee100f0cf 100644 (file)
@@ -122,7 +122,7 @@ bool CCondition::Wait(CMutex *mutex, uint32_t iTimeout /* = 0 */)
       gettimeofday(&now, NULL);
       iTimeout       += now.tv_usec / 1000;
       abstime.tv_sec  = now.tv_sec + (time_t)(iTimeout / 1000);
-      abstime.tv_nsec = (int32_t)((iTimeout % (uint32_t)1000) * (uint32_t)1000000);
+      abstime.tv_nsec = (time_t) ( (iTimeout % (uint32_t)1000) * (uint32_t)1000);
       bReturn         = (pthread_cond_timedwait(&m_cond, &mutex->m_mutex, &abstime) == 0);
     }
     else