From 09925e6113d1b2dd9b68c8c3196371ef8f7f77ee Mon Sep 17 00:00:00 2001 From: kamel5 Date: Fri, 30 Apr 2021 17:56:21 +0200 Subject: [PATCH] Fix Incorrect detection of a recording that is currently running To set timeShiftActive correctly, it is not sufficient to compare the name of the recording and the timer in cGlobalTimers::IsRecording() if no short text is available. Therefore, the start time of both is now also compared. --- HISTORY | 3 +++ coreengine/viewdisplayreplay.c | 2 +- extensions/globaltimers.c | 8 ++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 8fa701b..f060109 100644 --- a/HISTORY +++ b/HISTORY @@ -507,3 +507,6 @@ Version 1.2.15 Upcoming for Version 1.2.16+ - [pbiering] add additional recording flag "isInUse" - can be used in skins for e.g. records in cutting/copy(queue) - [pbiering] add additional vdrstatus exposing "vdrIsRecordingsHandlersActive" and "vdrIsRecording" - can be used in skins for e.g. IDLE/BUSY REC/FREE +- [kamel5] Fix Incorrect detection of a recording that is currently running +- [kamel5] Fix segfault with mpv plugin (thx to @lnj at vdr-portal.de) +- [kamel5] Update skin estuary4vdr diff --git a/coreengine/viewdisplayreplay.c b/coreengine/viewdisplayreplay.c index 1ee8684..757c898 100644 --- a/coreengine/viewdisplayreplay.c +++ b/coreengine/viewdisplayreplay.c @@ -177,9 +177,9 @@ void cViewReplay::GetGlobalTimers(void) { } void cViewReplay::SetTimeShiftValues(int current, int total) { + timeShiftActive = NoRec; if (!recording) return; - timeShiftActive = NoRec; #if APIVERSNUM >= 20101 int usage = recording->IsInUse(); if (usage & ruTimer) diff --git a/extensions/globaltimers.c b/extensions/globaltimers.c index 8de97ce..95f0a52 100644 --- a/extensions/globaltimers.c +++ b/extensions/globaltimers.c @@ -177,14 +177,18 @@ bool cGlobalTimers::IsRecording(const cRecording *rec) { if (!rec || !rec->Name()) return false; std::string recName = rec->Name(); + time_t recstart = rec->Start(); int size = Size(); for (int i=0; iFile(); if (!t->Matches() || !timerFile) continue; - if (recName.find(timerFile) != std::string::npos) - return true; + if (recName.find(timerFile) != std::string::npos) { + time_t timerstart = t->StartTime(); + if (recstart == timerstart) + return true; + } } return false; }