cosmetics
[deb_libcec.git] / src / lib / devices / CECBusDevice.cpp
index f03f0cba0bbf590fd6d2baa325a5b6d56a595df2..794829ae3ab51ec84e23ed83275ebbde0f5116bd 100644 (file)
@@ -434,10 +434,15 @@ void CCECBusDevice::SetMenuState(const cec_menu_state state)
   }
 }
 
-void CCECBusDevice::SetInactiveDevice(void)
+void CCECBusDevice::SetInactiveSource(void)
 {
-  CLockObject lock(&m_writeMutex);
-  m_bActiveSource = false;
+  {
+    CLockObject lock(&m_writeMutex);
+    m_bActiveSource = false;
+  }
+
+  if (MyLogicalAddressContains(m_iLogicalAddress))
+    SetPowerStatus(CEC_POWER_STATUS_STANDBY);
 }
 
 void CCECBusDevice::SetActiveSource(void)
@@ -446,7 +451,7 @@ void CCECBusDevice::SetActiveSource(void)
 
   for (int iPtr = 0; iPtr < 16; iPtr++)
     if (iPtr != m_iLogicalAddress)
-      m_processor->m_busDevices[iPtr]->SetInactiveDevice();
+      m_processor->m_busDevices[iPtr]->SetInactiveSource();
 
   m_bActiveSource = true;
   m_powerStatus   = CEC_POWER_STATUS_ON;
@@ -583,7 +588,7 @@ bool CCECBusDevice::SetVendorId(uint64_t iVendorId, bool bInitHandler /* = true
     }
   }
 
-  if (bVendorChanged && bInitHandler)
+  if (bVendorChanged && bInitHandler && m_handler->GetVendorId() != CEC_VENDOR_UNKNOWN)
     m_handler->InitHandler();
 
   CStdString strLog;
@@ -783,13 +788,13 @@ bool CCECBusDevice::TransmitVendorID(cec_logical_address dest, bool bSendAbort /
   }
 }
 
-bool CCECBusDevice::TransmitKeypress(cec_user_control_code key)
+bool CCECBusDevice::TransmitKeypress(cec_user_control_code key, bool bWait /* = true */)
 {
-  return m_handler->TransmitKeypress(m_processor->GetLogicalAddress(), m_iLogicalAddress, key);
+  return m_handler->TransmitKeypress(m_processor->GetLogicalAddress(), m_iLogicalAddress, key, bWait);
 }
 
-bool CCECBusDevice::TransmitKeyRelease(void)
+bool CCECBusDevice::TransmitKeyRelease(bool bWait /* = true */)
 {
-  return m_handler->TransmitKeyRelease(m_processor->GetLogicalAddress(), m_iLogicalAddress);
+  return m_handler->TransmitKeyRelease(m_processor->GetLogicalAddress(), m_iLogicalAddress, bWait);
 }
 //@}