win32: removed unneeded Stdafx. cleaned up targets
[deb_libcec.git] / src / lib / CECProcessor.cpp
index 02c1e96498b1295af7025c828d9f3c4812bf28ef..798c38a422cda0c8a855cac235a898d849961cc3 100644 (file)
@@ -607,6 +607,7 @@ bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress, bool bSendUpda
 {
   bool bSendActiveView(false);
   bool bReturn(false);
+  cec_logical_addresses sendUpdatesTo;
 
   {
     CLockObject lock(&m_mutex);
@@ -620,7 +621,7 @@ bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress, bool bSendUpda
           m_busDevices[iPtr]->SetInactiveSource();
           m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
           if (bSendUpdate)
-            m_busDevices[iPtr]->TransmitPhysicalAddress();
+            sendUpdatesTo.Set((cec_logical_address)iPtr);
         }
 
       bSendActiveView = bWasActiveSource && bSendUpdate;
@@ -628,6 +629,10 @@ bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress, bool bSendUpda
     }
   }
 
+  for (uint8_t iPtr = 0; iPtr < 15; iPtr++)
+    if (sendUpdatesTo[iPtr])
+      m_busDevices[iPtr]->TransmitPhysicalAddress();
+
   if (bSendActiveView)
     SetActiveView();
 
@@ -1435,6 +1440,8 @@ const char *CCECProcessor::ToString(const cec_vendor_id vendor)
     return "Yamaha";
   case CEC_VENDOR_PHILIPS:
     return "Philips";
+  case CEC_VENDOR_SONY:
+    return "Sony";
   default:
     return "Unknown";
   }