diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2005-12-27 10:26:38 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2005-12-27 10:26:38 +0100 | 
| commit | 2892300d94f4255f33ebf26866d28e1696658c86 (patch) | |
| tree | 9057cd7c09d72e3cb5b65a9ad6b14f56e8c888a5 | |
| parent | e79df5ee06ea93fc4fb1cdf4983cefa726dc8d92 (diff) | |
| download | vdr-2892300d94f4255f33ebf26866d28e1696658c86.tar.gz vdr-2892300d94f4255f33ebf26866d28e1696658c86.tar.bz2 | |
Improved cSchedule::DropOutdated()
| -rw-r--r-- | epg.c | 28 | 
1 files changed, 16 insertions, 12 deletions
| @@ -7,7 +7,7 @@   * Original version (as used in VDR before 1.3.0) written by   * 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" @@ -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;              }           }       } | 
