X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdevices%2FCECBusDevice.cpp;h=b304cb9c3e1a902b9a0ae2c0652fa93857bbb8ac;hb=e75e09bfc2b9799a6a57f9c4ca8cff4984e8fc99;hp=0bd6dabea7d36b012cce498b4899899b2bee6f3d;hpb=14f5626891e260b5294a9d4cb73988ed11a41443;p=deb_libcec.git diff --git a/src/lib/devices/CECBusDevice.cpp b/src/lib/devices/CECBusDevice.cpp index 0bd6dab..b304cb9 100644 --- a/src/lib/devices/CECBusDevice.cpp +++ b/src/lib/devices/CECBusDevice.cpp @@ -39,6 +39,7 @@ #include "lib/implementations/CECCommandHandler.h" #include "lib/implementations/SLCommandHandler.h" #include "lib/implementations/VLCommandHandler.h" +#include "lib/implementations/PHCommandHandler.h" #include "lib/LibCEC.h" #include "lib/CECTypeUtils.h" #include "lib/platform/util/timeutils.h" @@ -132,6 +133,9 @@ bool CCECBusDevice::ReplaceHandler(bool bActivateSource /* = true */) case CEC_VENDOR_PANASONIC: m_handler = new CVLCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending); break; + case CEC_VENDOR_PHILIPS: + m_handler = new CPHCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending); + break; default: m_handler = new CCECCommandHandler(this, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending); break; @@ -533,9 +537,6 @@ bool CCECBusDevice::SetPhysicalAddress(uint16_t iNewAddress) { LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s (%X): physical address changed from %04x to %04x", GetLogicalAddressName(), m_iLogicalAddress, m_iPhysicalAddress, iNewAddress); m_iPhysicalAddress = iNewAddress; - - if (m_processor->GetDevices()->GetActiveSourceAddress() == iNewAddress) - MarkAsActiveSource(); } return true; } @@ -1121,6 +1122,8 @@ bool CCECBusDevice::TransmitPendingActiveSourceCommands(void) void CCECBusDevice::SetActiveRoute(uint16_t iRoute) { + SetPowerStatus(CEC_POWER_STATUS_ON); + CCECDeviceMap* map = m_processor->GetDevices(); if (!map) return; @@ -1141,6 +1144,8 @@ void CCECBusDevice::SetActiveRoute(uint16_t iRoute) void CCECBusDevice::SetStreamPath(uint16_t iNewAddress, uint16_t iOldAddress /* = CEC_INVALID_PHYSICAL_ADDRESS */) { + SetPowerStatus(CEC_POWER_STATUS_ON); + CLockObject lock(m_mutex); if (iNewAddress != m_iStreamPath) {