{
m_logicalAddresses.Clear();
m_logicalAddresses.Set(iLogicalAddress);
- m_types.Clear();
+ m_types.clear();
for (int iPtr = 0; iPtr <= 16; iPtr++)
m_busDevices[iPtr] = new CCECBusDevice(this, (cec_logical_address) iPtr, iPtr == iLogicalAddress ? iPhysicalAddress : 0);
}
}
m_busDevices[address]->m_powerStatus = CEC_POWER_STATUS_STANDBY;
m_busDevices[address]->m_cecVersion = CEC_VERSION_1_3A;
+ m_busDevices[address]->m_deviceStatus = CEC_DEVICE_STATUS_HANDLED_BY_LIBCEC;
m_logicalAddresses.Set(address);
}
}
- return SetStreamPath(m_busDevices[addr]->GetPhysicalAddress());
+ return SetStreamPath(m_busDevices[addr]->GetPhysicalAddress()) &&
+ m_busDevices[addr]->TransmitActiveSource();
}
bool CCECProcessor::SetActiveView(void)
{
- return SetActiveSource();
+ return SetActiveSource(m_types.IsEmpty() ? CEC_DEVICE_TYPE_RESERVED : m_types[0]);
}
bool CCECProcessor::SetDeckControlMode(cec_deck_control_mode mode, bool bSendUpdate /* = true */)
CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
if (device)
{
- for (unsigned int iPtr = 0; iPtr < 16; iPtr++)
- m_busDevices[iPtr]->m_bActiveSource = false;
-
- device->m_bActiveSource = true;
- device->m_powerStatus = CEC_POWER_STATUS_ON;
-
+ device->SetActiveDevice();
bReturn = true;
}