From f2326740dbc556a8ed4657042f423a08bc650f58 Mon Sep 17 00:00:00 2001 From: Kai Sommerfeld Date: Wed, 6 Feb 2019 14:48:40 +0100 Subject: [PATCH] [PVR] Fix CPVRTimers::GetRecordingTimerForRecording to respect timer's start and stop padding time + optimize to check epg event uids if present. --- xbmc/pvr/timers/PVRTimers.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/xbmc/pvr/timers/PVRTimers.cpp b/xbmc/pvr/timers/PVRTimers.cpp index b2f81725a18f5..ddc6267decdd7 100644 --- a/xbmc/pvr/timers/PVRTimers.cpp +++ b/xbmc/pvr/timers/PVRTimers.cpp @@ -796,11 +796,19 @@ CPVRTimerInfoTagPtr CPVRTimers::GetRecordingTimerForRecording(const CPVRRecordin if (timersEntry->IsRecording() && !timersEntry->IsTimerRule() && timersEntry->m_iClientId == recording.ClientID() && - timersEntry->m_iClientChannelUid == recording.ChannelUid() && - timersEntry->StartAsUTC() <= recording.RecordingTimeAsUTC() && - timersEntry->EndAsUTC() >= recording.EndTimeAsUTC()) + timersEntry->m_iClientChannelUid == recording.ChannelUid()) { - return timersEntry; + // first, match epg event uids, if available + if (timersEntry->UniqueBroadcastID() == recording.BroadcastUid() && + timersEntry->UniqueBroadcastID() != EPG_TAG_INVALID_UID) + return timersEntry; + + // alternatively, match start and end times + const CDateTime timerStart = timersEntry->StartAsUTC() - CDateTimeSpan(0, 0, timersEntry->m_iMarginStart, 0); + const CDateTime timerEnd = timersEntry->EndAsUTC() + CDateTimeSpan(0, 0, timersEntry->m_iMarginEnd, 0); + if (timerStart <= recording.RecordingTimeAsUTC() && + timerEnd >= recording.EndTimeAsUTC()) + return timersEntry; } } }