m_busDevices[addr]->SetActiveSource();
if (m_busDevices[addr]->GetPhysicalAddress(false) != 0xFFFF)
- {
- bReturn = m_busDevices[addr]->TransmitActiveSource();
-
- if (bReturn && (m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
- m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE) &&
- m_busDevices[addr]->GetHandler()->SendDeckStatusUpdateOnActiveSource())
- {
- bReturn = ((CCECPlaybackDevice *)m_busDevices[addr])->TransmitDeckStatus(CECDEVICE_TV);
- }
- }
+ bReturn = m_busDevices[addr]->GetHandler()->ActivateSource();
return bReturn;
}
return true;
}
-bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress)
+bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress, bool bSendUpdate /* = true */)
{
bool bWasActiveSource(false);
CLockObject lock(&m_mutex);
bWasActiveSource |= m_busDevices[iPtr]->IsActiveSource();
m_busDevices[iPtr]->SetInactiveSource();
m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
- m_busDevices[iPtr]->TransmitPhysicalAddress();
+ if (bSendUpdate)
+ m_busDevices[iPtr]->TransmitPhysicalAddress();
}
- return bWasActiveSource ? SetActiveView() : true;
+ return bWasActiveSource && bSendUpdate ? SetActiveView() : true;
}
return false;
}