CCECCommandHandler::~CCECCommandHandler(void)
{
- CLockObject lock(m_processor->m_transmitMutex);
- CLockObject receiveLock(m_receiveMutex);
m_condition.Broadcast();
}
{
device->SetActiveSource();
return device->TransmitPhysicalAddress() &&
+ device->TransmitImageViewOn() &&
device->TransmitActiveSource();
}
}
if (device && m_busDevice->MyLogicalAddressContains(device->GetLogicalAddress()))
{
device->SetActiveSource();
+ device->TransmitImageViewOn();
device->TransmitActiveSource();
device->SetMenuState(CEC_MENU_STATE_ACTIVATED);
if (device->MyLogicalAddressContains(device->GetLogicalAddress()))
{
device->SetActiveSource();
+ device->TransmitImageViewOn();
device->TransmitActiveSource();
if (device->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
}
}
+bool CCECCommandHandler::PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination)
+{
+ if (iDestination == CECDEVICE_TV)
+ return TransmitImageViewOn(iInitiator, iDestination);
+
+ return TransmitKeypress(iInitiator, iDestination, CEC_USER_CONTROL_CODE_POWER) &&
+ TransmitKeyRelease(iInitiator, iDestination);
+}
+
bool CCECCommandHandler::TransmitImageViewOn(const cec_logical_address iInitiator, const cec_logical_address iDestination)
{
cec_command command;
bool CCECCommandHandler::ActivateSource(void)
{
- if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV)
+ if (m_busDevice->IsActiveSource() &&
+ m_busDevice->GetStatus(false) == CEC_DEVICE_STATUS_HANDLED_BY_LIBCEC)
{
- CCECBusDevice *primary = m_processor->GetPrimaryDevice();
- primary->SetPowerStatus(CEC_POWER_STATUS_ON);
- primary->SetMenuState(CEC_MENU_STATE_ACTIVATED);
+ m_busDevice->SetPowerStatus(CEC_POWER_STATUS_ON);
+ m_busDevice->SetMenuState(CEC_MENU_STATE_ACTIVATED);
- if (m_processor->GetPrimaryDevice()->GetPhysicalAddress(false) != 0xffff)
- {
- m_processor->SetActiveSource();
- primary->TransmitMenuState(m_busDevice->GetLogicalAddress());
- m_bHandlerInited = true;
- }
+ m_busDevice->TransmitImageViewOn();
+ m_busDevice->TransmitActiveSource();
+ m_busDevice->TransmitMenuState(CECDEVICE_TV);
+ if ((m_busDevice->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
+ m_busDevice->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE) &&
+ SendDeckStatusUpdateOnActiveSource())
+ ((CCECPlaybackDevice *)m_busDevice)->TransmitDeckStatus(CECDEVICE_TV);
+ m_bHandlerInited = true;
}
return true;
}