From: Lars Op den Kamp Date: Thu, 2 Aug 2012 15:19:56 +0000 (+0200) Subject: cec: ensure that the command handler of the tv is replaced before registering a clien... X-Git-Tag: upstream/2.2.0~1^2~19^2^2~9 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=3af491459e9a60a773d5af74c351dfa202fa44be;p=deb_libcec.git cec: ensure that the command handler of the tv is replaced before registering a client, or it might result in a double eeprom write attempt --- diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 76c2465..db6f8a1 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -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));