1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Now using a separate fixed value for internal EPG linger time

This commit is contained in:
Klaus Schmidinger 2021-04-28 20:44:56 +02:00
parent 98fa6206ac
commit 4a199fe4ac
5 changed files with 16 additions and 6 deletions

View File

@ -3672,6 +3672,8 @@ J
use VPS and fully overlaps a second event that is longer than the original one use VPS and fully overlaps a second event that is longer than the original one
for reporting a missing EPISODE macro expansion in case the event doesn't yet have a for reporting a missing EPISODE macro expansion in case the event doesn't yet have a
short text when generating the pattern timer file name short text when generating the pattern timer file name
for reporting a problem with spawned timers jumping to the next event in case
Setup.EPGLinger is very small
Stefan Verse <Verse@amotronics.de> Stefan Verse <Verse@amotronics.de>
for fixing an occasional black screen when switching channels for fixing an occasional black screen when switching channels

View File

@ -9662,3 +9662,9 @@ Video Disk Recorder Revision History
the start/stop times of timers in the main menu. the start/stop times of timers in the main menu.
- EXPIRELATENCY now only applies to VPS timers. - EXPIRELATENCY now only applies to VPS timers.
- Deleting expired timers is now triggered immediately after the timers are modified. - Deleting expired timers is now triggered immediately after the timers are modified.
2021-04-28:
- Now using a separate fixed value for internal EPG linger time. This fixes problems with
spawned timers jumping to the next event in case Setup.EPGLinger is very small. (reported
by Jürgen Schneider).

4
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
* *
* $Id: eit.c 5.2 2021/04/04 11:06:30 kls Exp $ * $Id: eit.c 5.3 2021/04/28 20:44:56 kls Exp $
*/ */
// The various ways in which broadcasters handle (or screw up) their EPG: // The various ways in which broadcasters handle (or screw up) their EPG:
@ -133,7 +133,7 @@ cEIT::cEIT(cEitTablesHash &EitTablesHash, int Source, u_char Tid, const u_char *
bool Empty = true; bool Empty = true;
bool Modified = false; bool Modified = false;
time_t LingerLimit = Now - Setup.EPGLinger * 60; time_t LingerLimit = Now - EPG_LINGER_TIME;
time_t SegmentStart = 0; // these are actually "section" start/end times time_t SegmentStart = 0; // these are actually "section" start/end times
time_t SegmentEnd = 0; time_t SegmentEnd = 0;
struct tm t = { 0 }; struct tm t = { 0 };

6
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $Id: epg.c 5.4 2021/04/13 13:35:17 kls Exp $ * $Id: epg.c 5.5 2021/04/28 20:44:56 kls Exp $
*/ */
#include "epg.h" #include "epg.h"
@ -450,7 +450,7 @@ cString cEvent::GetVpsString(void) const
void cEvent::Dump(FILE *f, const char *Prefix, bool InfoOnly) const void cEvent::Dump(FILE *f, const char *Prefix, bool InfoOnly) const
{ {
if (InfoOnly || startTime + duration + Setup.EPGLinger * 60 >= time(NULL)) { if (InfoOnly || startTime + duration + EPG_LINGER_TIME >= time(NULL)) {
fprintf(f, "%sE %u %ld %d %X %X\n", Prefix, eventID, startTime, duration, tableID, version); fprintf(f, "%sE %u %ld %d %X %X\n", Prefix, eventID, startTime, duration, tableID, version);
if (!isempty(title)) if (!isempty(title))
fprintf(f, "%sT %s\n", Prefix, title); fprintf(f, "%sT %s\n", Prefix, title);
@ -1135,7 +1135,7 @@ void cSchedule::Cleanup(time_t Time)
{ {
cEvent *Event; cEvent *Event;
while ((Event = events.First()) != NULL) { while ((Event = events.First()) != NULL) {
if (!Event->HasTimer() && Event->EndTime() + Setup.EPGLinger * 60 < Time) if (!Event->HasTimer() && Event->EndTime() + EPG_LINGER_TIME < Time)
DelEvent(Event); DelEvent(Event);
else else
break; break;

4
epg.h
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $Id: epg.h 5.1 2021/04/04 11:06:30 kls Exp $ * $Id: epg.h 5.2 2021/04/28 20:44:56 kls Exp $
*/ */
#ifndef __EPG_H #ifndef __EPG_H
@ -20,6 +20,8 @@
#define MAXEPGBUGFIXLEVEL 3 #define MAXEPGBUGFIXLEVEL 3
#define EPG_LINGER_TIME (max(Setup.EPGLinger, 180) * 60) // seconds to keep old EPG data (internal, must be at least Setup.EPGLinger)
enum { MaxEventContents = 4 }; enum { MaxEventContents = 4 };
enum eEventContentGroup { enum eEventContentGroup {