X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=88795e92b9dde65123abe66f6b4de546371b9759;hb=cc0a29772b1a007b1b3760bcfb11750a801f844b;hp=6461ca9b2bd1da66f2e134f3d465ed868aa609af;hpb=7b01619d3e08506efea013b3bd34b0148803a120;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 6461ca9..88795e9 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -62,7 +62,8 @@ CCECProcessor::CCECProcessor(CLibCEC *libcec) : m_libcec(libcec), m_iStandardLineTimeout(3), m_iRetryLineTimeout(3), - m_iLastTransmission(0) + m_iLastTransmission(0), + m_bMonitor(true) { m_busDevices = new CCECDeviceMap(this); } @@ -800,7 +801,7 @@ bool CCECProcessor::UnregisterClient(CCECClient *client) if (SetLogicalAddresses(addresses)) { // no more clients left, disable controlled mode - if (addresses.IsEmpty()) + if (addresses.IsEmpty() && !m_bMonitor) m_communication->SetControlledMode(false); return true; @@ -873,3 +874,13 @@ bool CCECProcessor::IsRunningLatestFirmware(void) m_communication->IsRunningLatestFirmware() : true; } + +void CCECProcessor::SwitchMonitoring(bool bSwitchTo) +{ + { + CLockObject lock(m_mutex); + m_bMonitor = bSwitchTo; + } + if (bSwitchTo) + UnregisterClients(); +}