From 8c633a5f65da85769600f8867296f33cc30b9946 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 13 Oct 2012 14:19:26 +0200 Subject: [PATCH] Fixed handling VPS timers in case the running status of an event goes to '1' (not running) and later goes to '4' (running) --- HISTORY | 4 +++- timers.c | 6 +++--- vdr.c | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/HISTORY b/HISTORY index efc81c6b..5fdc7b47 100644 --- a/HISTORY +++ b/HISTORY @@ -7272,7 +7272,7 @@ Video Disk Recorder Revision History ".keep" to prevent a directory from being deleted when it is empty. Currently the only file name that is ignored is ".sort". -2012-10-09: Version 1.7.32 +2012-10-13: Version 1.7.32 - Pressing the Play key during normal live viewing mode now opens the Recordings menu if there is no "last viewed" recording (thanks to Alexander Wenzel). @@ -7296,3 +7296,5 @@ Video Disk Recorder Revision History libhdffcmd/Makefile. - Added options to build a 32-bit version of VDR on a 64-bit machine to Make.config.template. +- Fixed handling VPS timers in case the running status of an event goes to '1' (not + running) and later goes to '4' (running). diff --git a/timers.c b/timers.c index 7d4c70b1..b5678f90 100644 --- a/timers.c +++ b/timers.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.c 2.12 2012/09/15 13:34:03 kls Exp $ + * $Id: timers.c 2.13 2012/10/13 14:16:22 kls Exp $ */ #include "timers.h" @@ -551,6 +551,8 @@ void cTimer::SetEventFromSchedule(const cSchedules *Schedules) if (HasFlags(tfVps) && Schedule->Events()->First()->Vps()) { if (event && Recording()) return; // let the recording end first + if (event && (now <= event->EndTime() || Matches(0, true))) + return; // stay with the old event until the timer has completely expired // VPS timers only match if their start time exactly matches the event's VPS time: for (const cEvent *e = Schedule->Events()->First(); e; e = Schedule->Events()->Next(e)) { if (e->StartTime() && e->RunningStatus() != SI::RunningStatusNotRunning) { // skip outdated events @@ -562,8 +564,6 @@ void cTimer::SetEventFromSchedule(const cSchedules *Schedules) } } } - if (!Event && event && (now <= event->EndTime() || Matches(0, true))) - return; // stay with the old event until the timer has completely expired } else { // Normal timers match the event they have the most overlap with: diff --git a/vdr.c b/vdr.c index 4ce7b269..5494cf7d 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 2.41 2012/10/03 09:58:46 kls Exp $ + * $Id: vdr.c 2.42 2012/10/13 12:48:56 kls Exp $ */ #include @@ -892,7 +892,7 @@ int main(int argc, char *argv[]) Timer->SetInVpsMargin(InVpsMargin); } else if (Timer->Event()) { - InVpsMargin = Timer->Event()->StartTime() <= Now && Timer->Event()->RunningStatus() == SI::RunningStatusUndefined; + InVpsMargin = Timer->Event()->StartTime() <= Now && Now < Timer->Event()->EndTime(); NeedsTransponder = Timer->Event()->StartTime() - Now < VPSLOOKAHEADTIME * 3600 && !Timer->Event()->SeenWithin(VPSUPTODATETIME); } else {