Fixed handling VPS timers in case the running status of an event goes to '1' (not running) and later goes to '4' (running)

This commit is contained in:
Klaus Schmidinger 2012-10-13 14:19:26 +02:00
parent 7f7fa7fd90
commit 8c633a5f65
3 changed files with 8 additions and 6 deletions

View File

@ -7272,7 +7272,7 @@ Video Disk Recorder Revision History
".keep" to prevent a directory from being deleted when it is empty. Currently the ".keep" to prevent a directory from being deleted when it is empty. Currently the
only file name that is ignored is ".sort". 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 - 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). if there is no "last viewed" recording (thanks to Alexander Wenzel).
@ -7296,3 +7296,5 @@ Video Disk Recorder Revision History
libhdffcmd/Makefile. libhdffcmd/Makefile.
- Added options to build a 32-bit version of VDR on a 64-bit machine to - Added options to build a 32-bit version of VDR on a 64-bit machine to
Make.config.template. 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).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "timers.h"
@ -551,6 +551,8 @@ void cTimer::SetEventFromSchedule(const cSchedules *Schedules)
if (HasFlags(tfVps) && Schedule->Events()->First()->Vps()) { if (HasFlags(tfVps) && Schedule->Events()->First()->Vps()) {
if (event && Recording()) if (event && Recording())
return; // let the recording end first 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: // 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)) { for (const cEvent *e = Schedule->Events()->First(); e; e = Schedule->Events()->Next(e)) {
if (e->StartTime() && e->RunningStatus() != SI::RunningStatusNotRunning) { // skip outdated events 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 { else {
// Normal timers match the event they have the most overlap with: // Normal timers match the event they have the most overlap with:

4
vdr.c
View File

@ -22,7 +22,7 @@
* *
* The project's page is at http://www.tvdr.de * 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 <getopt.h> #include <getopt.h>
@ -892,7 +892,7 @@ int main(int argc, char *argv[])
Timer->SetInVpsMargin(InVpsMargin); Timer->SetInVpsMargin(InVpsMargin);
} }
else if (Timer->Event()) { 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); NeedsTransponder = Timer->Event()->StartTime() - Now < VPSLOOKAHEADTIME * 3600 && !Timer->Event()->SeenWithin(VPSUPTODATETIME);
} }
else { else {