X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=07592587d6a4134e216bac82540d70bc0bfb3822;hb=18203d17e6894d33725dac7553d981aee735e6be;hp=6259dae8ef0d6e116035e7f509479a09a3a50373;hpb=68391d4f314948ec3f808765593b6d60394132ec;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 6259dae..0759258 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -290,17 +290,33 @@ void *CCECProcessor::Process(void) return NULL; } -bool CCECProcessor::SetActiveView(void) +bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RESERVED */) { bool bReturn(false); if (!IsRunning()) return bReturn; - if (!m_logicalAddresses.empty() && m_busDevices[m_logicalAddresses.primary]) - bReturn = SetStreamPath(m_busDevices[m_logicalAddresses.primary]->GetPhysicalAddress()); + cec_logical_address addr = m_logicalAddresses.primary; - return bReturn; + if (type != CEC_DEVICE_TYPE_RESERVED) + { + for (unsigned int iPtr = 0; iPtr < 16; iPtr++) + { + if (m_logicalAddresses[iPtr] && m_busDevices[iPtr]->m_type == type) + { + addr = (cec_logical_address) iPtr; + break; + } + } + } + + return SetStreamPath(m_busDevices[addr]->GetPhysicalAddress()); +} + +bool CCECProcessor::SetActiveView(void) +{ + return SetActiveSource(); } bool CCECProcessor::SetStreamPath(uint16_t iStreamPath)