X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=ad41d3c5f552fc5b854f556d732c2d074c387205;hb=c4483d6f83059251d529c8be45510734877477be;hp=261f4f5e0f06edbac86a89512a73661c9ff1b30e;hpb=ff07d530081c95583ad2bd3849f0168da98239b1;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 261f4f5..ad41d3c 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -104,6 +104,8 @@ void CCECProcessor::Close(void) SetCECInitialised(false); // stop the processor + StopThread(-1); + m_inBuffer.Broadcast(); StopThread(); // close the connection @@ -222,7 +224,7 @@ void *CCECProcessor::Process(void) if (m_inBuffer.Pop(command, CEC_PROCESSOR_SIGNAL_WAIT_TIME)) ProcessCommand(command); - if (CECInitialised()) + if (CECInitialised() && !IsStopped()) { // check clients for keypress timeouts m_libcec->CheckKeypressTimeout(); @@ -933,6 +935,8 @@ void CCECProcessor::HandleLogicalAddressLost(cec_logical_address oldAddress) m_libcec->AddLog(CEC_LOG_NOTICE, "logical address %x was taken by another device, allocating a new address", oldAddress); CCECClient* client = GetClient(oldAddress); + if (!client) + client = GetPrimaryClient(); if (client) { if (m_addrAllocator)