cec: fix handler init
[deb_libcec.git] / src / lib / implementations / CECCommandHandler.cpp
index 8d16a02fded9c611518c66207693ea95e29385d0..ef8a8f28f789c160839608641bfaa6b21ea3828b 100644 (file)
@@ -44,7 +44,8 @@ CCECCommandHandler::CCECCommandHandler(CCECBusDevice *busDevice) :
     m_processor(m_busDevice->GetProcessor()),
     m_iTransmitTimeout(CEC_DEFAULT_TRANSMIT_TIMEOUT),
     m_iTransmitWait(CEC_DEFAULT_TRANSMIT_WAIT),
-    m_iTransmitRetries(CEC_DEFAULT_TRANSMIT_RETRIES)
+    m_iTransmitRetries(CEC_DEFAULT_TRANSMIT_RETRIES),
+    m_bHandlerInited(false)
 {
 }
 
@@ -946,8 +947,12 @@ bool CCECCommandHandler::InitHandler(void)
     primary->SetPowerStatus(CEC_POWER_STATUS_ON);
     primary->SetMenuState(CEC_MENU_STATE_ACTIVATED);
 
-    m_processor->SetActiveSource();
-    primary->TransmitMenuState(m_busDevice->GetLogicalAddress());
+    if (m_processor->GetPrimaryDevice()->GetPhysicalAddress(false) != 0xffff)
+    {
+      m_processor->SetActiveSource();
+      primary->TransmitMenuState(m_busDevice->GetLogicalAddress());
+      m_bHandlerInited = true;
+    }
   }
   return true;
 }