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

Events in the EIT that end before the EPG linger time are now ignored in the incoming data stream

This commit is contained in:
Klaus Schmidinger 2017-05-03 09:02:24 +02:00
parent 1a92ae77a0
commit 79b57feab6
3 changed files with 10 additions and 4 deletions

View File

@ -8991,7 +8991,7 @@ Video Disk Recorder Revision History
current channel is listed. current channel is listed.
- Fixed a possible crash when pulling the CAM while decrypting a channel with MTD. - 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 - 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. 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). larger than the size of the variable).
- Log messages about switching channels now include the channel ID (suggested by - Log messages about switching channels now include the channel ID (suggested by
Dietmar Spingler). 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.

6
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 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" #include "eit.h"
@ -79,6 +79,7 @@ cEIT::cEIT(cSectionSyncerHash &SectionSyncerHash, int Source, u_char Tid, const
bool Empty = true; bool Empty = true;
bool Modified = false; bool Modified = false;
time_t LingerLimit = Now - Setup.EPGLinger * 60;
time_t SegmentStart = 0; time_t SegmentStart = 0;
time_t SegmentEnd = 0; time_t SegmentEnd = 0;
struct tm t = { 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. // 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) if (StartTime == 0 || StartTime > 0 && Duration == 0)
continue; continue;
// Ignore events that ended before the "EPG linger time":
if (StartTime + Duration < LingerLimit)
continue;
Empty = false; Empty = false;
if (!SegmentStart) if (!SegmentStart)
SegmentStart = StartTime; SegmentStart = StartTime;

4
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 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" #include "epg.h"
@ -1098,7 +1098,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 + 3600 < Time) // adding one hour for safety if (!Event->HasTimer() && Event->EndTime() + Setup.EPGLinger * 60 < Time)
DelEvent(Event); DelEvent(Event);
else else
break; break;