SetCECInitialised(false);
// stop the processor
+ StopThread(-1);
+ m_inBuffer.Broadcast();
StopThread();
// close the connection
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();
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)