fixed - reset the delayed source switch timeout properly, so we don't spam commands...
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 11 Oct 2012 10:59:15 +0000 (12:59 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 11 Oct 2012 10:59:15 +0000 (12:59 +0200)
src/lib/implementations/CECCommandHandler.cpp

index cf0984b02f0a862d5df4dbb010b47351952d119c..08bc528430cb81b184dd60a3b59b5c025f211c32 100644 (file)
@@ -1174,9 +1174,10 @@ bool CCECCommandHandler::ActivateSource(bool bTransmitDelayedCommandsOnly /* = f
     if (bActiveSourceFailed || !bSourceSwitchAllowed)
     {
       LIB_CEC->AddLog(CEC_LOG_DEBUG, "failed to make '%s' the active source. will retry later", m_busDevice->GetLogicalAddressName());
+      int64_t now(GetTimeMs());
       CLockObject lock(m_mutex);
-      if (m_iActiveSourcePending == 0)
-        m_iActiveSourcePending = GetTimeMs() + (int64_t)CEC_ACTIVE_SOURCE_SWITCH_RETRY_TIME_MS;
+      if (m_iActiveSourcePending == 0 || m_iActiveSourcePending < now)
+        m_iActiveSourcePending = now + (int64_t)CEC_ACTIVE_SOURCE_SWITCH_RETRY_TIME_MS;
       return false;
     }
     else