- CCECBusDevice *primary = m_processor->GetPrimaryDevice();
- primary->SetPowerStatus(CEC_POWER_STATUS_ON);
- primary->SetMenuState(CEC_MENU_STATE_ACTIVATED);
+ {
+ CLockObject lock(m_mutex);
+ m_bActiveSourcePending = false;
+ }
+
+ m_busDevice->SetPowerStatus(CEC_POWER_STATUS_ON);
+ m_busDevice->SetMenuState(CEC_MENU_STATE_ACTIVATED);
+
+ bool bActiveSourceFailed = !m_busDevice->TransmitImageViewOn() ||
+ !m_busDevice->TransmitActiveSource() ||
+ !m_busDevice->TransmitMenuState(CECDEVICE_TV);
+
+ if (!bActiveSourceFailed)
+ {
+ CCECPlaybackDevice *playbackDevice = m_busDevice->AsPlaybackDevice();
+ if (playbackDevice && SendDeckStatusUpdateOnActiveSource())
+ bActiveSourceFailed = !playbackDevice->TransmitDeckStatus(CECDEVICE_TV);
+ }