summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2021-04-28 20:44:56 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2021-04-28 20:44:56 +0200
commit4a199fe4acba6da192c0fa5b847760ca65e2c365 (patch)
tree8e5ac12681f3412aaacfc9987a99313f12fc9d84
parent98fa6206ac8aaef4864a4de4ac2f14d821a3bd55 (diff)
downloadvdr-4a199fe4acba6da192c0fa5b847760ca65e2c365.tar.gz
vdr-4a199fe4acba6da192c0fa5b847760ca65e2c365.tar.bz2
Now using a separate fixed value for internal EPG linger time
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY6
-rw-r--r--eit.c4
-rw-r--r--epg.c6
-rw-r--r--epg.h4
5 files changed, 16 insertions, 6 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9e865a94..aa2d9967 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3672,6 +3672,8 @@ Jürgen Schneider <jsffm@web.de>
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
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>
for fixing an occasional black screen when switching channels
diff --git a/HISTORY b/HISTORY
index 6beb0cf2..4e05870d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9662,3 +9662,9 @@ Video Disk Recorder Revision History
the start/stop times of timers in the main menu.
- EXPIRELATENCY now only applies to VPS timers.
- 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).
diff --git a/eit.c b/eit.c
index 404cd9dd..b06a1368 100644
--- a/eit.c
+++ b/eit.c
@@ -8,7 +8,7 @@
* 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>.
*
- * $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:
@@ -133,7 +133,7 @@ cEIT::cEIT(cEitTablesHash &EitTablesHash, int Source, u_char Tid, const u_char *
bool Empty = true;
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 SegmentEnd = 0;
struct tm t = { 0 };
diff --git a/epg.c b/epg.c
index 2f1d2a23..7178d740 100644
--- a/epg.c
+++ b/epg.c
@@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* 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"
@@ -450,7 +450,7 @@ cString cEvent::GetVpsString(void) 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);
if (!isempty(title))
fprintf(f, "%sT %s\n", Prefix, title);
@@ -1135,7 +1135,7 @@ void cSchedule::Cleanup(time_t Time)
{
cEvent *Event;
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);
else
break;
diff --git a/epg.h b/epg.h
index b3ed6201..e4689251 100644
--- a/epg.h
+++ b/epg.h
@@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* 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
@@ -20,6 +20,8 @@
#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 eEventContentGroup {