From ff17eae7a150b1420c3eebcf57ed2a407e9626a4 Mon Sep 17 00:00:00 2001 From: Johann Friedrichs Date: Fri, 22 Mar 2019 12:46:42 +0100 Subject: Don't mix local and remote concurrent timers Adjust nextRelevantConflictDate for remote conflicts Ignore remote conflicts in EpgsearchServiceHandler --- conflictcheck.c | 6 ++++++ services.c | 1 + 2 files changed, 7 insertions(+) diff --git a/conflictcheck.c b/conflictcheck.c index d7dda8c..e90c474 100644 --- a/conflictcheck.c +++ b/conflictcheck.c @@ -496,6 +496,10 @@ cList* cConflictCheck::CreateRemoteConflictList(cList; LogFile.Log(2, "added remote checkTime %s to failedList", DAYDATETIME(evaltime)); failedList->Add(checkTime); + if (!nextRelevantConflictDate) + nextRelevantConflictDate = checkTime->evaltime; + else + nextRelevantConflictDate = std::min(nextRelevantConflictDate, checkTime->evaltime); numConflicts++; // find TimerObj with id Id in timerList cConflictCheckTimerObj* failedTimer = NULL; @@ -552,6 +556,7 @@ cList* cConflictCheck::CreateRemoteConflictList(cList& pendingTimers) { for (cConflictCheckTimerObj* concTimer = timerList->First(); concTimer; concTimer = timerList->Next(concTimer)) { + if (concTimer->timer->Remote()) continue; // ignore overlapping remote timers if (concTimer->start >= TimerObj->stop) continue; if (concTimer->stop <= TimerObj->start) continue; if (!TimerObj->concurrentTimers) TimerObj->concurrentTimers = new std::set; diff --git a/services.c b/services.c index 2013a38..31749f2 100644 --- a/services.c +++ b/services.c @@ -262,6 +262,7 @@ std::list cEpgsearchServiceHandler::TimerConflictList(bool relOnly) { std::list list; cConflictCheck conflictCheck; + conflictCheck.SetLocal(); // remote Timers would give a wrong Id conflictCheck.Check(); if ((relOnly && conflictCheck.numConflicts > 0) || -- cgit v1.2.3