cec: ensure that the command handler of the tv is replaced before registering a clien...
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 2 Aug 2012 15:19:56 +0000 (17:19 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 2 Aug 2012 15:19:56 +0000 (17:19 +0200)
src/lib/CECProcessor.cpp

index 76c2465fb2dd74419822d63cf5991e4c4814af95..db6f8a16876bd1c8a2c2330be4dc78280c00b5c0 100644 (file)
@@ -665,10 +665,13 @@ bool CCECProcessor::RegisterClient(CCECClient *client)
 
   // ensure that we know the vendor id of the TV
   CCECBusDevice *tv = GetTV();
+  cec_vendor_id tvVendor = CEC_VENDOR_UNKNOWN;
   if (m_communication->SupportsSourceLogicalAddress(CECDEVICE_UNREGISTERED))
-    tv->GetVendorId(CECDEVICE_UNREGISTERED);
+    tvVendor = tv->GetVendorId(CECDEVICE_UNREGISTERED);
   else if (m_communication->SupportsSourceLogicalAddress(CECDEVICE_FREEUSE))
-    tv->GetVendorId(CECDEVICE_FREEUSE);
+    tvVendor = tv->GetVendorId(CECDEVICE_FREEUSE);
+  if (tvVendor != CEC_VENDOR_UNKNOWN)
+    tv->ReplaceHandler(false);
 
   // get the configuration from the client
   m_libcec->AddLog(CEC_LOG_NOTICE, "registering new CEC client - v%s", ToString((cec_client_version)configuration.clientVersion));