Improved cSchedule::DropOutdated()

This commit is contained in:
Klaus Schmidinger 2005-12-27 10:26:38 +01:00
parent e79df5ee06
commit 2892300d94

8
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 1.45 2005/12/26 15:10:27 kls Exp $ * $Id: epg.c 1.46 2005/12/27 10:26:38 kls Exp $
*/ */
#include "epg.h" #include "epg.h"
@ -742,7 +742,8 @@ void cSchedule::DropOutdated(time_t SegmentStart, time_t SegmentEnd, uchar Table
{ {
if (SegmentStart > 0 && SegmentEnd > 0) { if (SegmentStart > 0 && SegmentEnd > 0) {
for (cEvent *p = events.First(); p; p = events.Next(p)) { for (cEvent *p = events.First(); p; p = events.Next(p)) {
if (!(p->EndTime() <= SegmentStart || p->StartTime() >= SegmentEnd)) { if (p->EndTime() > SegmentStart) {
if (p->StartTime() < SegmentEnd) {
// The event overlaps with the given time segment. // The event overlaps with the given time segment.
if (p->TableID() > TableID || p->TableID() == TableID && p->Version() != Version) { if (p->TableID() > TableID || p->TableID() == TableID && p->Version() != Version) {
// The segment overwrites all events from tables with higher ids, and // The segment overwrites all events from tables with higher ids, and
@ -755,6 +756,9 @@ void cSchedule::DropOutdated(time_t SegmentStart, time_t SegmentEnd, uchar Table
p->startTime = 0; p->startTime = 0;
} }
} }
else
break;
}
} }
} }
} }