diff --git a/epg.c b/epg.c index 82810789..05a8713a 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.11 2004/02/22 13:18:01 kls Exp $ + * $Id: epg.c 1.12 2004/02/22 13:55:12 kls Exp $ */ #include "epg.h" @@ -460,22 +460,25 @@ cEvent *cSchedule::AddEvent(cEvent *Event) return Event; } -const cEvent *cSchedule::GetPresentEvent(void) const +const cEvent *cSchedule::GetPresentEvent(bool CheckRunningStatus) const { const cEvent *pe = NULL; time_t now = time(NULL); for (cEvent *p = events.First(); p; p = events.Next(p)) { - if (p->StartTime() <= now && now < p->StartTime() + p->Duration()) + if (p->StartTime() <= now && now < p->StartTime() + p->Duration()) { pe = p; - if (p->RunningStatus() >= SI::RunningStatusPausing) + if (!CheckRunningStatus) + break; + } + if (CheckRunningStatus && p->RunningStatus() >= SI::RunningStatusPausing) return p; } return pe; } -const cEvent *cSchedule::GetFollowingEvent(void) const +const cEvent *cSchedule::GetFollowingEvent(bool CheckRunningStatus) const { - const cEvent *p = GetPresentEvent(); + const cEvent *p = GetPresentEvent(CheckRunningStatus); if (p) p = events.Next(p); return p; diff --git a/epg.h b/epg.h index 55c37d5b..9cdd6ef3 100644 --- a/epg.h +++ b/epg.h @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.h 1.8 2004/02/22 13:18:14 kls Exp $ + * $Id: epg.h 1.9 2004/02/22 13:52:46 kls Exp $ */ #ifndef __EPG_H @@ -83,8 +83,8 @@ public: void Cleanup(time_t Time); void Cleanup(void); cEvent *AddEvent(cEvent *Event); - const cEvent *GetPresentEvent(void) const; - const cEvent *GetFollowingEvent(void) const; + const cEvent *GetPresentEvent(bool CheckRunningStatus = false) const; + const cEvent *GetFollowingEvent(bool CheckRunningStatus = false) const; const cEvent *GetEvent(u_int16_t EventID, time_t StartTime = 0) const; const cEvent *GetEventAround(time_t Time) const; const cEvent *GetEventNumber(int n) const { return events.Get(n); } diff --git a/menu.c b/menu.c index 8d30644e..187174af 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.291 2004/02/22 13:43:55 kls Exp $ + * $Id: menu.c 1.292 2004/02/22 14:14:55 kls Exp $ */ #include "menu.h" @@ -1375,7 +1375,7 @@ void cMenuSchedule::PrepareSchedule(cChannel *Channel) if (schedules) { const cSchedule *Schedule = schedules->GetSchedule(Channel->GetChannelID()); if (Schedule) { - const cEvent *PresentEvent = Schedule->GetPresentEvent(); + const cEvent *PresentEvent = Schedule->GetPresentEvent(Channel->Number() == cDevice::CurrentChannel()); int num = Schedule->NumEvents(); time_t now = time(NULL) - Setup.EPGLinger * 60; for (int a = 0; a < num; a++) { @@ -2764,7 +2764,7 @@ void cDisplayChannel::DisplayInfo(void) if (Schedule) { const char *PresentTitle = NULL, *PresentSubtitle = NULL, *FollowingTitle = NULL, *FollowingSubtitle = NULL; int Lines = 0; - if ((Present = Schedule->GetPresentEvent()) != NULL) { + if ((Present = Schedule->GetPresentEvent(true)) != NULL) { PresentTitle = Present->Title(); if (!isempty(PresentTitle)) Lines++; @@ -2772,7 +2772,7 @@ void cDisplayChannel::DisplayInfo(void) if (!isempty(PresentSubtitle)) Lines++; } - if ((Following = Schedule->GetFollowingEvent()) != NULL) { + if ((Following = Schedule->GetFollowingEvent(true)) != NULL) { FollowingTitle = Following->Title(); if (!isempty(FollowingTitle)) Lines++;