X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FCECCommandHandler.cpp;h=8ec93eee09d22a9902bbc24f55dc776441d61d3d;hb=de49d80bb32eef6589d7d3a2413aa684a39b7e34;hp=561819f3f47d77401c5c00b6fea3f172eafb13e8;hpb=49c8f2e44d5f34e98ab669e1c132d9ccd669468f;p=deb_libcec.git diff --git a/src/lib/implementations/CECCommandHandler.cpp b/src/lib/implementations/CECCommandHandler.cpp index 561819f..8ec93ee 100644 --- a/src/lib/implementations/CECCommandHandler.cpp +++ b/src/lib/implementations/CECCommandHandler.cpp @@ -716,6 +716,15 @@ void CCECCommandHandler::SetPhysicalAddress(cec_logical_address iAddress, uint16 } } +bool CCECCommandHandler::PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination) +{ + if (iDestination == CECDEVICE_TV) + return TransmitImageViewOn(iInitiator, iDestination); + + return TransmitKeypress(iInitiator, iDestination, CEC_USER_CONTROL_CODE_POWER) && + TransmitKeyRelease(iInitiator, iDestination); +} + bool CCECCommandHandler::TransmitImageViewOn(const cec_logical_address iInitiator, const cec_logical_address iDestination) { cec_command command; @@ -980,10 +989,14 @@ bool CCECCommandHandler::ActivateSource(void) primary->SetPowerStatus(CEC_POWER_STATUS_ON); primary->SetMenuState(CEC_MENU_STATE_ACTIVATED); - if (m_processor->GetPrimaryDevice()->GetPhysicalAddress(false) != 0xffff) + if (m_busDevice->GetStatus(false) == CEC_DEVICE_STATUS_HANDLED_BY_LIBCEC) { - m_processor->SetActiveSource(); - primary->TransmitMenuState(m_busDevice->GetLogicalAddress()); + m_busDevice->TransmitMenuState(CECDEVICE_TV); + + if ((m_busDevice->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE || + m_busDevice->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE) && + SendDeckStatusUpdateOnActiveSource()) + ((CCECPlaybackDevice *)m_busDevice)->TransmitDeckStatus(CECDEVICE_TV); m_bHandlerInited = true; } }