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 and Rolf Hakenes . * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg . * - * $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 and Rolf Hakenes . * - * $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;