// check whether the TV is present and responding
if (tvPresentCheck.TimeLeft() == 0)
{
- if (!m_busDevices->At(CECDEVICE_TV)->IsPresent())
+ CCECClient *primary = GetPrimaryClient();
+ // only check whether the tv responds to polls when a client is connected and not in monitoring mode
+ if (primary && primary->GetConfiguration()->bMonitorOnly != 1)
{
- libcec_parameter param;
- param.paramType = CEC_PARAMETER_TYPE_STRING;
- param.paramData = (void*)"TV does not respond to CEC polls";
- GetPrimaryClient()->Alert(CEC_ALERT_TV_POLL_FAILED, param);
+ if (!m_busDevices->At(CECDEVICE_TV)->IsPresent())
+ {
+ libcec_parameter param;
+ param.paramType = CEC_PARAMETER_TYPE_STRING;
+ param.paramData = (void*)"TV does not respond to CEC polls";
+ primary->Alert(CEC_ALERT_TV_POLL_FAILED, param);
+ }
}
tvPresentCheck.Init(TV_PRESENT_CHECK_INTERVAL);
}
void CCECProcessor::ProcessCommand(const cec_command &command)
{
// log the command
- m_libcec->AddLog(CEC_LOG_TRAFFIC, CCECTypeUtils::ToString(command).c_str());
+ m_libcec->AddLog(CEC_LOG_TRAFFIC, ToString(command).c_str());
// find the initiator
CCECBusDevice *device = m_busDevices->At(command.initiator);
// replace a previous client
CLockObject lock(m_mutex);
m_clients.erase((*it)->GetLogicalAddress());
- m_clients.insert(make_pair<cec_logical_address, CCECClient *>((*it)->GetLogicalAddress(), client));
+ m_clients.insert(make_pair((*it)->GetLogicalAddress(), client));
}
// set the new ackmask
client->GetPrimaryDevice()->TransmitOSDName(CECDEVICE_TV, false);
// request the power status of the TV
- tv->RequestPowerStatus(sourceAddress, true);
+ tv->RequestPowerStatus(sourceAddress, true, true);
return bReturn;
}