X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=1daa7b60d2d8d421f879fa9b530ce07039725b1f;hb=0e54ee2e232fa018c158f3a6e5eaaae18bf1d05f;hp=d995345c01df94c3f144d21bb4962a4a90404c68;hpb=9a0d7b9f744c551930928fee6d3dac0d90507cd1;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index d995345..1daa7b6 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -118,14 +118,6 @@ CCECProcessor::CCECProcessor(CLibCEC *controller, const char *strDeviceName, con CCECProcessor::~CCECProcessor(void) { m_bStarted = false; - StopThread(false); - - if (m_busScan) - { - m_busScan->StopThread(); - delete m_busScan; - } - m_startCondition.Broadcast(); StopThread(); @@ -268,7 +260,9 @@ void *CCECProcessor::Process(void) } else { - m_busDevices[m_logicalAddresses.primary]->TransmitPhysicalAddress(); + m_busDevices[CECDEVICE_TV]->GetVendorId(); + m_busDevices[m_logicalAddresses.primary]->TransmitVendorID(CECDEVICE_TV, false); + CLockObject lock(&m_mutex); m_bStarted = true; m_controller->AddLog(CEC_LOG_DEBUG, "processor thread started"); @@ -302,6 +296,13 @@ void *CCECProcessor::Process(void) m_controller->CheckKeypressTimeout(); } + if (m_busScan) + { + m_busScan->StopThread(); + delete m_busScan; + m_busScan = NULL; + } + if (m_communication) m_communication->Close(); @@ -353,11 +354,6 @@ void CCECProcessor::SetRetryLineTimeout(uint8_t iTimeout) m_iRetryLineTimeout = iTimeout; } -bool CCECProcessor::SetActiveSource(cec_logical_address iAddress) -{ - return SetStreamPath(m_busDevices[iAddress]->GetPhysicalAddress(false)); -} - bool CCECProcessor::SetActiveView(void) { return SetActiveSource(m_types.IsEmpty() ? CEC_DEVICE_TYPE_RESERVED : m_types[0]); @@ -524,7 +520,10 @@ bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress) { for (uint8_t iPtr = 0; iPtr < 15; iPtr++) if (m_logicalAddresses[iPtr]) + { m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress); + m_busDevices[iPtr]->TransmitPhysicalAddress(); + } return SetActiveView(); } return false; @@ -540,7 +539,7 @@ bool CCECProcessor::SwitchMonitoring(bool bEnable) CLockObject lock(&m_mutex); m_bMonitor = bEnable; - if (bEnable) + if (!bEnable) { if (!m_busScan) { @@ -1297,9 +1296,15 @@ const char *CCECProcessor::ToString(const cec_vendor_id vendor) void *CCECBusScan::Process(void) { CCECBusDevice *device(NULL); + uint8_t iCounter(0); while (!IsStopped()) { + if (++iCounter < 30) + { + Sleep(1000); + continue; + } for (unsigned int iPtr = 0; iPtr <= 11 && !IsStopped(); iPtr++) { device = m_processor->m_busDevices[iPtr];