From 994dbaaa5c1f32810f3b4266caf5d6dd72e21718 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Thu, 22 Dec 2011 00:25:33 +0100 Subject: [PATCH] cec: don't try to do anything before the processor thread has started --- src/lib/CECProcessor.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 0aa8760..cc5cd40 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -149,9 +149,23 @@ bool CCECProcessor::Start(const char *strPort, uint16_t iBaudRate /* = 38400 */, m_controller->AddLog(CEC_LOG_ERROR, "could not create a processor thread"); return false; } - lock.Leave(); + if (m_logicalAddresses.IsEmpty() && !FindLogicalAddresses()) + { + m_controller->AddLog(CEC_LOG_ERROR, "could not detect our logical addresses"); + StopThread(true); + return false; + } + else + { + /* only set our OSD name and active source for the primary device */ + m_busDevices[m_logicalAddresses.primary]->m_strDeviceName = m_strDeviceName; + m_busDevices[m_logicalAddresses.primary]->m_bActiveSource = true; + + SetAckMask(m_logicalAddresses.AckMask()); + } + m_busDevices[CECDEVICE_TV]->GetVendorId(); if (SetHDMIPort(m_iBaseDevice, m_iHDMIPort, true)) @@ -248,21 +262,7 @@ void *CCECProcessor::Process(void) cec_command command; CCECAdapterMessage msg; - if (m_logicalAddresses.IsEmpty() && !FindLogicalAddresses()) - { - CLockObject lock(&m_mutex); - m_controller->AddLog(CEC_LOG_ERROR, "could not detect our logical addresses"); - m_startCondition.Signal(); - return NULL; - } - else { - /* only set our OSD name and active source for the primary device */ - m_busDevices[m_logicalAddresses.primary]->m_strDeviceName = m_strDeviceName; - m_busDevices[m_logicalAddresses.primary]->m_bActiveSource = true; - - SetAckMask(m_logicalAddresses.AckMask()); - CLockObject lock(&m_mutex); m_bStarted = true; m_controller->AddLog(CEC_LOG_DEBUG, "processor thread started"); -- 2.34.1