cec: removed 'retries' from cec_command, to avoid stack smashing when upgrading the...
[deb_libcec.git] / src / lib / CECProcessor.cpp
index 463e04448ab15aeb03f88e77c28a73bb23d77b05..a3c22df3169ad9f3851b3b34a30fd38c22cd96c7 100644 (file)
@@ -717,6 +717,13 @@ bool CCECProcessor::Transmit(const cec_command &data)
   LogOutput(data);
 
   CCECAdapterMessage *output = new CCECAdapterMessage(data);
+
+  /* set the number of retries */
+  if (data.opcode == CEC_OPCODE_NONE)
+    output->maxTries = 1;
+  else if (data.initiator != CECDEVICE_BROADCAST)
+    output->maxTries = m_busDevices[data.initiator]->GetHandler()->GetTransmitRetries() + 1;
+
   bReturn = Transmit(output);
 
   /* set to "not present" on failed ack */
@@ -1335,7 +1342,7 @@ void *CCECBusScan::Process(void)
 
   while (!IsStopped())
   {
-    if (++iCounter < 30)
+    if (++iCounter < 10)
     {
       Sleep(1000);
       continue;
@@ -1365,11 +1372,11 @@ void CCECBusScan::WaitUntilIdle(void)
   if (IsStopped())
     return;
 
-  int64_t iWaitTime = 3000 - (GetTimeMs() - m_processor->GetLastTransmission());
+  int32_t iWaitTime = 3000 - (int32_t)(GetTimeMs() - m_processor->GetLastTransmission());
   while (iWaitTime > 0)
   {
     Sleep(iWaitTime);
-    iWaitTime = 3000 - (GetTimeMs() - m_processor->GetLastTransmission());
+    iWaitTime = 3000 - (int32_t)(GetTimeMs() - m_processor->GetLastTransmission());
   }
 }