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:
parent
1a92ae77a0
commit
79b57feab6
4
HISTORY
4
HISTORY
@ -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
6
eit.c
@ -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
4
epg.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user