From 65aafacd8e6e9e3948bbd94f9bcc1720afbfb5b4 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 10 Apr 2021 11:32:50 +0200 Subject: [PATCH] Now adjusting spawned timers before setting events to timers --- HISTORY | 1 + vdr.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 3cda625c..f9ba6686 100644 --- a/HISTORY +++ b/HISTORY @@ -9650,3 +9650,4 @@ Video Disk Recorder Revision History an immediate respawn on the remote machine, because at that time the event on the remote machine was still covered by the initial timer (which, from the remote machine's standpoint, was "remote"). +- Now adjusting spawned timers before setting events to timers. diff --git a/vdr.c b/vdr.c index 433645ae..47faf486 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 5.3 2021/04/06 10:00:27 kls Exp $ + * $Id: vdr.c 5.4 2021/04/10 11:32:50 kls Exp $ */ #include @@ -1107,10 +1107,14 @@ int main(int argc, char *argv[]) bool TimersModified = false; if (const cSchedules *Schedules = cSchedules::GetSchedulesRead(SchedulesStateKey)) { Timers->SetSyncStateKey(StateKeySVDRPRemoteTimersPoll); // setting events shall not trigger a remote timer poll... + if (Timers->AdjustSpawnedTimers()) { // must do this *before* SetEvents()! + StateKeySVDRPRemoteTimersPoll.Reset(); // ...but adjusting spawned timers... + TimersModified = true; + } if (Timers->SetEvents(Schedules)) TimersModified = true; - if (Timers->SpawnPatternTimers(Schedules) | Timers->AdjustSpawnedTimers()) { // this really is '|', not '||'! - StateKeySVDRPRemoteTimersPoll.Reset(); // ...but spawning new timers or adjusting spawned timers must! + if (Timers->SpawnPatternTimers(Schedules)) { + StateKeySVDRPRemoteTimersPoll.Reset(); // ...or spawning new timers must! TimersModified = true; } SchedulesStateKey.Remove();