From a9cbdf00fea484c519c93c5eca16ea782ea7fed0 Mon Sep 17 00:00:00 2001 From: louis Date: Sun, 12 Jun 2016 11:02:28 +0200 Subject: [PATCH] timeshift detection for remote timers --- displayreplay.c | 6 ++++++ extensions/globaltimers.c | 16 ++++++++++++++++ extensions/globaltimers.h | 1 + 3 files changed, 23 insertions(+) diff --git a/displayreplay.c b/displayreplay.c index e1f8246..ac7ad47 100644 --- a/displayreplay.c +++ b/displayreplay.c @@ -91,6 +91,12 @@ void cSDDisplayReplay::SetTimeShiftValues(const cRecording *recording) { int usage = recording->IsInUse(); if (usage & ruTimer) isTimeShift = true; + else { + cGlobalTimers globalTimers; + globalTimers.LoadTimers(); + if (globalTimers.IsRecording(recording)) + isTimeShift = true; + } #endif if (!isTimeShift) return; diff --git a/extensions/globaltimers.c b/extensions/globaltimers.c index c6b483c..1d8092f 100644 --- a/extensions/globaltimers.c +++ b/extensions/globaltimers.c @@ -167,6 +167,22 @@ const char* cGlobalTimers::RemoteHost(int i) { return ""; } +bool cGlobalTimers::IsRecording(const cRecording *rec) { + if (!rec || !rec->Name()) + return false; + std::string recName = rec->Name(); + int size = Size(); + for (int i=0; iFile(); + if (!t->Matches() || !timerFile) + continue; + if (recName.find(timerFile) != std::string::npos) + return true; + } + return false; +} + void cGlobalTimers::ClearTimers(void) { if (isEpg2VdrTimers) { int size = Size(); diff --git a/extensions/globaltimers.h b/extensions/globaltimers.h index 9f722d8..91f3bdc 100644 --- a/extensions/globaltimers.h +++ b/extensions/globaltimers.h @@ -27,6 +27,7 @@ class cGlobalTimers : public cVector { int NumTimerConfilicts(void); bool IsRemoteTimer(int i); const char* RemoteHost(int i); + bool IsRecording(const cRecording *rec); void ClearTimers(void); static void StartRefreshThread(void); static void StopRefreshThread(void);