CPVRTimerInfoTagPtr CPVRTimers::GetTimerForEpgTag(const CPVREpgInfoTagPtr &epgTag) const { if (epgTag) { CSingleLock lock(m_critSection); for (const auto &tagsEntry : m_tags) { for (const auto &timersEntry : tagsEntry.second) { if (timersEntry->IsTimerRule()) continue; if (timersEntry->GetEpgInfoTag(false) == epgTag) return timersEntry; if (timersEntry->m_iClientChannelUid != PVR_CHANNEL_INVALID_UID && timersEntry->m_iClientChannelUid == epgTag->UniqueChannelID()) { if (timersEntry->UniqueBroadcastID() != EPG_TAG_INVALID_UID && timersEntry->UniqueBroadcastID() == epgTag->UniqueBroadcastID()) return timersEntry; if (timersEntry->m_bIsRadio == epgTag->IsRadio() && timersEntry->StartAsUTC() <= epgTag->StartAsUTC() && timersEntry->EndAsUTC() >= epgTag->EndAsUTC()) return timersEntry; } } } } return CPVRTimerInfoTagPtr(); }
CPVRRecordingPtr CPVRRecordings::GetRecordingForEpgTag(const CPVREpgInfoTagPtr &epgTag) const { if (!epgTag) return {}; CSingleLock lock(m_critSection); for (const auto recording : m_recordings) { if (recording.second->IsDeleted()) continue; if (recording.second->ClientID() != epgTag->ClientID()) continue; if (recording.second->ChannelUid() != epgTag->UniqueChannelID()) continue; unsigned int iEpgEvent = recording.second->BroadcastUid(); if (iEpgEvent != EPG_TAG_INVALID_UID) { if (iEpgEvent == epgTag->UniqueBroadcastID()) return recording.second; } else { if (recording.second->RecordingTimeAsUTC() <= epgTag->StartAsUTC() && recording.second->EndTimeAsUTC() >= epgTag->EndAsUTC()) return recording.second; } } return CPVRRecordingPtr(); }