X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=399e065daa81f9872e4d95d3efb54e2773c49d05;hb=ecc633c51b6c69bebaff4932e90245665ca06373;hp=73c921d8120f68c0ffff4f440e6e66e2e0443b07;hpb=270e872981d615bd362407527100d345684e2f3d;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 73c921d..399e065 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -260,6 +260,12 @@ bool CCECProcessor::ActivateSource(uint16_t iStreamPath) return bReturn; } +void CCECProcessor::SetActiveSource(bool bSetTo, bool bClientUnregistered) +{ + if (m_communication) + m_communication->SetActiveSource(bSetTo, bClientUnregistered); +} + void CCECProcessor::SetStandardLineTimeout(uint8_t iTimeout) { CLockObject lock(m_mutex); @@ -345,7 +351,7 @@ cec_logical_address CCECProcessor::GetActiveSource(bool bRequestActiveSource /* if (activeSource) return activeSource->GetLogicalAddress(); - if (bRequestActiveSource) + if (bRequestActiveSource && m_busDevices->GetActiveSourceAddress() == CEC_INVALID_PHYSICAL_ADDRESS) { // request the active source from the bus CCECBusDevice *primary = GetPrimaryDevice(); @@ -737,6 +743,7 @@ bool CCECProcessor::RegisterClient(CCECClient *client) // ensure that controlled mode is enabled m_communication->SetControlledMode(true); + m_bMonitor = false; // source logical address for requests cec_logical_address sourceAddress(CECDEVICE_UNREGISTERED); @@ -863,7 +870,7 @@ bool CCECProcessor::UnregisterClient(CCECClient *client) m_clients.erase(entry); // reset the device status - (*it)->ResetDeviceStatus(); + (*it)->ResetDeviceStatus(true); } }