X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FSLCommandHandler.cpp;h=f1e3d7e229539980e1b34e9c71e74f32661c25ec;hb=3faa971cecb5f713c611ba787b6b0a0486ecbd86;hp=5a76d286749cd4f19e2068e17ab75cab023a2c01;hpb=143e675b705eaceb1bb514e63301c02dbcf70600;p=deb_libcec.git diff --git a/src/lib/implementations/SLCommandHandler.cpp b/src/lib/implementations/SLCommandHandler.cpp index 5a76d28..f1e3d7e 100644 --- a/src/lib/implementations/SLCommandHandler.cpp +++ b/src/lib/implementations/SLCommandHandler.cpp @@ -88,8 +88,11 @@ bool CSLCommandHandler::InitHandler(void) bool CSLCommandHandler::ActivateSource(void) { + if (!m_bSLEnabled) + return true; + if (m_bActiveSourceSent) - return false; + return true; m_bActiveSourceSent = true; CCECBusDevice *primary = m_processor->GetPrimaryDevice(); @@ -265,18 +268,29 @@ bool CSLCommandHandler::HandleGiveDevicePowerStatus(const cec_command &command) bReturn = device->TransmitPowerState(command.initiator); device->SetPowerStatus(CEC_POWER_STATUS_ON); } - else if (!ActivateSource()) - { - /* assume that we've bugged out */ - CLibCEC::AddLog(CEC_LOG_NOTICE, "LG seems to have bugged out. resetting to 'in transition standby to on'"); - m_bActiveSourceSent = false; - device->SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON); - bReturn = device->TransmitPowerState(command.initiator); - device->SetPowerStatus(CEC_POWER_STATUS_ON); - } else { - bReturn = true; + if (!m_bActiveSourceSent) + { + device->SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON); + bReturn = device->TransmitPowerState(command.initiator); + ActivateSource(); + } + else if (m_resetPowerState.IsSet() && m_resetPowerState.TimeLeft() > 0) + { + /* assume that we've bugged out */ + CLibCEC::AddLog(CEC_LOG_NOTICE, "LG seems to have bugged out. resetting to 'in transition standby to on'"); + m_bActiveSourceSent = false; + device->SetPowerStatus(CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON); + bReturn = device->TransmitPowerState(command.initiator); + device->SetPowerStatus(CEC_POWER_STATUS_ON); + m_resetPowerState.Init(5000); + } + else + { + bReturn = device->TransmitPowerState(command.initiator); + m_resetPowerState.Init(5000); + } } }