cec: scan the CEC bus for devices when starting libcec
[deb_libcec.git] / src / lib / devices / CECBusDevice.cpp
index 5c38f635060be704a9e7cb55121980d235bbbdf1..b4c11f198e703a6e853ae23e2c551264ff1fa502 100644 (file)
@@ -322,10 +322,11 @@ cec_bus_device_status CCECBusDevice::GetStatus(void)
   CLockObject lock(&m_mutex);
   if (m_deviceStatus == CEC_DEVICE_STATUS_UNKNOWN)
   {
-    if (m_processor->PollDevice(m_iLogicalAddress))
-      m_deviceStatus = CEC_DEVICE_STATUS_PRESENT;
-    else
-      m_deviceStatus = CEC_DEVICE_STATUS_NOT_PRESENT;
+    lock.Leave();
+    bool bPollAcked = m_processor->PollDevice(m_iLogicalAddress);
+
+    lock.Lock();
+    m_deviceStatus = bPollAcked ? CEC_DEVICE_STATUS_PRESENT : CEC_DEVICE_STATUS_NOT_PRESENT;
   }
 
   return m_deviceStatus;