cec: request the active source if it's unknown in CCECProcessor::GetActiveSource()
[deb_libcec.git] / src / lib / CECProcessor.cpp
index 0e85dab388264f9317ebcaac2fc6b10f75aafcb4..a1603e8243a26b92cbed4d2080639eaa044fdf28 100644 (file)
@@ -911,7 +911,7 @@ cec_power_status CCECProcessor::GetDevicePowerStatus(cec_logical_address iAddres
   return CEC_POWER_STATUS_UNKNOWN;
 }
 
-cec_logical_address CCECProcessor::GetActiveSource(void)
+cec_logical_address CCECProcessor::GetActiveSource(bool bRequestActiveSource /* = true */)
 {
   for (uint8_t iPtr = 0; iPtr <= 11; iPtr++)
   {
@@ -919,6 +919,15 @@ cec_logical_address CCECProcessor::GetActiveSource(void)
       return (cec_logical_address)iPtr;
   }
 
+  if (bRequestActiveSource && m_configuration.logicalAddresses.primary != CECDEVICE_UNKNOWN)
+  {
+    CCECBusDevice *primary = m_busDevices[m_configuration.logicalAddresses.primary];
+    if (primary)
+      primary->RequestActiveSource();
+
+    return GetActiveSource(false);
+  }
+
   return CECDEVICE_UNKNOWN;
 }