From 2892300d94f4255f33ebf26866d28e1696658c86 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Tue, 27 Dec 2005 10:26:38 +0100 Subject: Improved cSchedule::DropOutdated() --- epg.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/epg.c b/epg.c index 6496db17..5cab8415 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 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" @@ -742,18 +742,22 @@ void cSchedule::DropOutdated(time_t SegmentStart, time_t SegmentEnd, uchar Table { if (SegmentStart > 0 && SegmentEnd > 0) { for (cEvent *p = events.First(); p; p = events.Next(p)) { - if (!(p->EndTime() <= SegmentStart || p->StartTime() >= SegmentEnd)) { - // The event overlaps with the given time segment. - if (p->TableID() > TableID || p->TableID() == TableID && p->Version() != Version) { - // The segment overwrites all events from tables with higher ids, and - // within the same table id all events must have the same version. - // We can't delete the event right here because a timer might have - // a pointer to it, so let's set its id and start time to 0 to have it - // "phased out": - UnhashEvent(p); - p->eventID = 0; - p->startTime = 0; + if (p->EndTime() > SegmentStart) { + if (p->StartTime() < SegmentEnd) { + // The event overlaps with the given time segment. + if (p->TableID() > TableID || p->TableID() == TableID && p->Version() != Version) { + // The segment overwrites all events from tables with higher ids, and + // within the same table id all events must have the same version. + // We can't delete the event right here because a timer might have + // a pointer to it, so let's set its id and start time to 0 to have it + // "phased out": + UnhashEvent(p); + p->eventID = 0; + p->startTime = 0; + } } + else + break; } } } -- cgit v1.2.3