summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--epg.c12
2 files changed, 9 insertions, 5 deletions
diff --git a/HISTORY b/HISTORY
index 16b94f87..2acd22f7 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4449,3 +4449,5 @@ Video Disk Recorder Revision History
device into transfer mode (thanks to Reinhard Nissl).
- The 'version' of EPG events is now ignored when reading EPG data from 'epg.data'
or via SVDRP/PUTE to avoid problems with double EPG events.
+- The 'running status' of EPG events is now only set to SI::RunningStatusNotRunning
+ for events before the present event.
diff --git a/epg.c b/epg.c
index 1530d8d5..bf97a69c 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 <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
- * $Id: epg.c 1.68 2006/03/26 13:44:23 kls Exp $
+ * $Id: epg.c 1.69 2006/03/26 13:47:29 kls Exp $
*/
#include "epg.h"
@@ -103,7 +103,7 @@ cEvent::cEvent(tEventID EventID)
eventID = EventID;
tableID = 0;
version = 0xFF; // actual version numbers are 0..31
- runningStatus = 0;
+ runningStatus = SI::RunningStatusUndefined;
title = NULL;
shortText = NULL;
description = NULL;
@@ -735,9 +735,11 @@ const cEvent *cSchedule::GetEventAround(time_t Time) const
void cSchedule::SetRunningStatus(cEvent *Event, int RunningStatus, cChannel *Channel)
{
for (cEvent *p = events.First(); p; p = events.Next(p)) {
- if (p == Event)
- p->SetRunningStatus(RunningStatus, Channel);
- else if (RunningStatus >= SI::RunningStatusPausing && p->RunningStatus() > SI::RunningStatusNotRunning)
+ if (p == Event) {
+ if (p->RunningStatus() > SI::RunningStatusNotRunning || RunningStatus > SI::RunningStatusNotRunning)
+ p->SetRunningStatus(RunningStatus, Channel);
+ }
+ else if (RunningStatus >= SI::RunningStatusPausing && p->StartTime() < Event->StartTime())
p->SetRunningStatus(SI::RunningStatusNotRunning);
}
if (RunningStatus >= SI::RunningStatusPausing)