/*
* This file is part of the libCEC(R) library.
*
- * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved.
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
* libCEC(R) is an original work, containing original code.
*
* libCEC(R) is a trademark of Pulse-Eight Limited.
opcode == CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP ||
opcode == CEC_OPCODE_ABORT ||
opcode == CEC_OPCODE_FEATURE_ABORT ||
- opcode == CEC_OPCODE_NONE)
+ opcode == CEC_OPCODE_NONE ||
+ opcode == CEC_OPCODE_USER_CONTROL_PRESSED ||
+ opcode == CEC_OPCODE_USER_CONTROL_RELEASE)
return;
{
return;
CCECBusDevice* newRoute = m_processor->GetDeviceByPhysicalAddress(iRoute, true);
- if (newRoute && newRoute->IsHandledByLibCEC())
+ if (newRoute)
{
- newRoute->ActivateSource();
- return;
- }
-
- CECDEVICEVEC devices;
- m_processor->GetDevices()->GetChildrenOf(devices, this);
-
- for (CECDEVICEVEC::iterator it = devices.begin(); it != devices.end(); it++)
- {
- if ((*it)->GetCurrentPhysicalAddress() == iRoute && (*it)->IsHandledByLibCEC())
- (*it)->ActivateSource();
- else if (!CCECTypeUtils::PhysicalAddressIsIncluded(iRoute, (*it)->GetCurrentPhysicalAddress()))
- (*it)->MarkAsInactiveSource();
+ // we were made the active source, send notification
+ if (newRoute->IsHandledByLibCEC())
+ newRoute->ActivateSource();
+ // another device was made active
+ else
+ newRoute->MarkAsActiveSource();
}
}