summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY4
-rw-r--r--eit.c6
-rw-r--r--epg.c4
3 files changed, 10 insertions, 4 deletions
diff --git a/HISTORY b/HISTORY
index e0d00b56..fba29f56 100644
--- a/HISTORY
+++ b/HISTORY
@@ -8991,7 +8991,7 @@ Video Disk Recorder Revision History
current channel is listed.
- Fixed a possible crash when pulling the CAM while decrypting a channel with MTD.
-2017-05-01: Version 2.3.5
+2017-05-03: Version 2.3.5
- CAMs are now sent a generated EIT packet that contains a single 'present event' for
the current SID, in order to avoid any parental rating dialogs.
@@ -8999,3 +8999,5 @@ Video Disk Recorder Revision History
larger than the size of the variable).
- Log messages about switching channels now include the channel ID (suggested by
Dietmar Spingler).
+- Events in the EIT that end before the EPG linger time are now ignored in the incoming
+ data stream, because they would just be deleted in the next schedules cleanup anyway.
diff --git a/eit.c b/eit.c
index cfed4d08..ade79286 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 4.2 2017/03/31 15:16:46 kls Exp $
+ * $Id: eit.c 4.3 2017/05/03 08:58:41 kls Exp $
*/
#include "eit.h"
@@ -79,6 +79,7 @@ cEIT::cEIT(cSectionSyncerHash &SectionSyncerHash, int Source, u_char Tid, const
bool Empty = true;
bool Modified = false;
+ time_t LingerLimit = Now - Setup.EPGLinger * 60;
time_t SegmentStart = 0;
time_t SegmentEnd = 0;
struct tm t = { 0 };
@@ -93,6 +94,9 @@ cEIT::cEIT(cSectionSyncerHash &SectionSyncerHash, int Source, u_char Tid, const
// Drop bogus events - but keep NVOD reference events, where all bits of the start time field are set to 1, resulting in a negative number.
if (StartTime == 0 || StartTime > 0 && Duration == 0)
continue;
+ // Ignore events that ended before the "EPG linger time":
+ if (StartTime + Duration < LingerLimit)
+ continue;
Empty = false;
if (!SegmentStart)
SegmentStart = StartTime;
diff --git a/epg.c b/epg.c
index c67b6456..b451fcf7 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 4.4 2017/04/02 11:34:15 kls Exp $
+ * $Id: epg.c 4.5 2017/05/03 08:58:19 kls Exp $
*/
#include "epg.h"
@@ -1098,7 +1098,7 @@ void cSchedule::Cleanup(time_t Time)
{
cEvent *Event;
while ((Event = events.First()) != NULL) {
- if (!Event->HasTimer() && Event->EndTime() + Setup.EPGLinger * 60 + 3600 < Time) // adding one hour for safety
+ if (!Event->HasTimer() && Event->EndTime() + Setup.EPGLinger * 60 < Time)
DelEvent(Event);
else
break;