X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FSLCommandHandler.cpp;h=f86a644f2db452804a19baa3c32f4e37fa83d7ba;hb=7de6ad36df678390b4cfa958b6d562e7e70c8a14;hp=c23099eb0d2c408ba0ef6f37f7fccdef7055dcae;hpb=7837bab3f716a157f901a43bf6367e6203e4c60b;p=deb_libcec.git diff --git a/src/lib/implementations/SLCommandHandler.cpp b/src/lib/implementations/SLCommandHandler.cpp index c23099e..f86a644 100644 --- a/src/lib/implementations/SLCommandHandler.cpp +++ b/src/lib/implementations/SLCommandHandler.cpp @@ -54,7 +54,7 @@ CSLCommandHandler::CSLCommandHandler(CCECBusDevice *busDevice) : m_bVendorIdSent(false) { /* TODO set to powered off until we fixed the connect on start loop issue */ - m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]->m_powerStatus = CEC_POWER_STATUS_STANDBY; + m_processor->GetPrimaryDevice()->m_powerStatus = CEC_POWER_STATUS_STANDBY; } bool CSLCommandHandler::HandleVendorCommand(const cec_command &command) @@ -131,7 +131,7 @@ void CSLCommandHandler::TransmitVendorCommand05(const cec_logical_address iSourc void CSLCommandHandler::HandleVendorCommandPowerOn(const cec_command &command) { - CCECBusDevice *device = m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]; + CCECBusDevice *device = m_processor->GetPrimaryDevice(); if (device) { m_bSLEnabled = true; @@ -145,8 +145,8 @@ void CSLCommandHandler::HandleVendorCommandPowerOn(const cec_command &command) void CSLCommandHandler::HandleVendorCommandSLConnect(const cec_command &command) { m_bSLEnabled = true; + m_processor->m_busDevices[command.initiator]->SetActiveSource(); m_processor->m_busDevices[command.destination]->TransmitActiveSource(); - m_processor->SetStreamPath(m_processor->m_busDevices[command.destination]->GetPhysicalAddress(false)); TransmitVendorCommand05(command.destination, command.initiator); TransmitDeckStatus(command.initiator); } @@ -165,7 +165,7 @@ void CSLCommandHandler::HandleVendorCommandPowerOnStatus(const cec_command &comm void CSLCommandHandler::TransmitDeckStatus(const cec_logical_address iDestination) { /* set deck status for the playback device */ - CCECBusDevice *primary = m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]; + CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (primary->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE || primary->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE) { ((CCECPlaybackDevice *)primary)->SetDeckStatus(CEC_DECK_INFO_OTHER_STATUS_LG); @@ -246,6 +246,10 @@ bool CSLCommandHandler::HandleReceiveFailed(void) bool CSLCommandHandler::InitHandler(void) { + if (m_bHandlerInited) + return true; + m_bHandlerInited = true; + m_processor->SetStandardLineTimeout(3); m_processor->SetRetryLineTimeout(3); @@ -254,7 +258,7 @@ bool CSLCommandHandler::InitHandler(void) m_iTransmitRetries = 4; m_iTransmitTimeout = 500; - CCECBusDevice *primary = m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]; + CCECBusDevice *primary = m_processor->GetPrimaryDevice(); if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) { primary->SetVendorId(CEC_VENDOR_LG, false);