From 2bdfdeefe29b5d897135f5d3d4adc86721334c73 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Sun, 4 Dec 2011 20:05:03 +0100 Subject: [PATCH] cec: send the physical address only once. keep a write lock when polling devices --- src/lib/devices/CECBusDevice.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/devices/CECBusDevice.cpp b/src/lib/devices/CECBusDevice.cpp index 52f0c20..340602c 100644 --- a/src/lib/devices/CECBusDevice.cpp +++ b/src/lib/devices/CECBusDevice.cpp @@ -730,6 +730,10 @@ bool CCECBusDevice::TransmitOSDString(cec_logical_address dest, cec_display_cont bool CCECBusDevice::TransmitPhysicalAddress(void) { CLockObject lock(&m_writeMutex); + + if (m_iPhysicalAddress = 0xffff) + return false; + CStdString strLog; strLog.Format("<< %s (%X) -> broadcast (F): physical adddress %4x", GetLogicalAddressName(), m_iLogicalAddress, m_iPhysicalAddress); AddLog(CEC_LOG_NOTICE, strLog.c_str()); @@ -750,6 +754,8 @@ bool CCECBusDevice::TransmitPoll(cec_logical_address dest) if (dest == CECDEVICE_UNKNOWN) dest = m_iLogicalAddress; + CLockObject lock(&m_writeMutex); + CStdString strLog; strLog.Format("<< %s (%X) -> %s (%X): POLL", GetLogicalAddressName(), m_iLogicalAddress, ToString(dest), dest); AddLog(CEC_LOG_NOTICE, strLog.c_str()); @@ -764,12 +770,8 @@ bool CCECBusDevice::TransmitPoll(cec_logical_address dest) } AddLog(CEC_LOG_DEBUG, bReturn ? ">> POLL sent" : ">> POLL not sent"); - if (bReturn) - { - CLockObject lock(&m_writeMutex); m_iLastActive = GetTimeMs(); - } return bReturn; } -- 2.34.1