always call the SourceActivated() callback in CCECBusDevice::MarkAsActiveSource(...
[deb_libcec.git] / src / lib / devices / CECBusDevice.cpp
index c9699d8f96f6f46dcf3ce1d54cce543e646ae2af..489ded2cec4f441d379922e76f5be7459795c452 100644 (file)
@@ -94,7 +94,10 @@ void CWaitForResponse::Clear()
 {
   PLATFORM::CLockObject lock(m_mutex);
   for (std::map<cec_opcode, CResponse*>::iterator it = m_waitingFor.begin(); it != m_waitingFor.end(); it++)
+  {
     it->second->Broadcast();
+    delete it->second;
+  }
   m_waitingFor.clear();
 }
 
@@ -886,7 +889,7 @@ void CCECBusDevice::SetDeviceStatus(const cec_bus_device_status newStatus, cec_v
       if (m_deviceStatus != newStatus)
         LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s (%X): device status changed into 'handled by libCEC'", GetLogicalAddressName(), m_iLogicalAddress);
       SetPowerStatus   (CEC_POWER_STATUS_ON);
-      SetVendorId      (CEC_VENDOR_UNKNOWN);
+      SetVendorId      (CEC_VENDOR_PULSE_EIGHT);
       SetMenuState     (CEC_MENU_STATE_ACTIVATED);
       SetCecVersion    (libCECSpecVersion);
       SetStreamPath    (CEC_INVALID_PHYSICAL_ADDRESS);
@@ -1079,14 +1082,12 @@ void CCECBusDevice::MarkAsActiveSource(void)
     if ((*it)->GetLogicalAddress() != m_iLogicalAddress)
       (*it)->MarkAsInactiveSource();
 
-  if (bWasActivated)
-  {
-    if (IsHandledByLibCEC())
-      m_processor->SetActiveSource(true, false);
-    CCECClient *client = GetClient();
-    if (client)
-      client->SourceActivated(m_iLogicalAddress);
-  }
+  if (bWasActivated && IsHandledByLibCEC())
+    m_processor->SetActiveSource(true, false);
+
+  CCECClient *client = GetClient();
+  if (client)
+    client->SourceActivated(m_iLogicalAddress);
 }
 
 void CCECBusDevice::MarkAsInactiveSource(bool bClientUnregistered /* = false */)