X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FVLCommandHandler.cpp;h=227d8a0aa3b67e25ebe4ec8f71a4f51c85a22d1a;hb=cf17686925e242ec3f1d1962414e53bad5ec2a00;hp=a60f897f105ff61c4832d72a94950341a2846d6b;hpb=f81fdbfa342d531485731c2102d18e7ae6941abf;p=deb_libcec.git diff --git a/src/lib/implementations/VLCommandHandler.cpp b/src/lib/implementations/VLCommandHandler.cpp index a60f897..227d8a0 100644 --- a/src/lib/implementations/VLCommandHandler.cpp +++ b/src/lib/implementations/VLCommandHandler.cpp @@ -61,7 +61,8 @@ CVLCommandHandler::CVLCommandHandler(CCECBusDevice *busDevice, int64_t iActiveSourcePending /* = 0 */) : CCECCommandHandler(busDevice, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending), m_iPowerUpEventReceived(0), - m_bCapabilitiesSent(false) + m_bCapabilitiesSent(false), + m_bPowerStatusRequested(false) { m_vendorId = CEC_VENDOR_PANASONIC; } @@ -246,8 +247,17 @@ int CVLCommandHandler::HandleVendorCommand(const cec_command &command) return CEC_ABORT_REASON_INVALID_OPERAND; } +bool CVLCommandHandler::TransmitRequestPowerStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse /* = true */) +{ + m_bPowerStatusRequested = true; + return CCECCommandHandler::TransmitRequestPowerStatus(iInitiator, iDestination, bWaitForResponse); +} + bool CVLCommandHandler::SourceSwitchAllowed(void) { + if (!PowerUpEventReceived() && !m_bPowerStatusRequested) + TransmitRequestPowerStatus(m_processor->GetPrimaryDevice()->GetLogicalAddress(), CECDEVICE_TV, false); + return PowerUpEventReceived(); }