1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed deleting EPG events that have a running status of "pausing" or higher

This commit is contained in:
Klaus Schmidinger 2006-10-28 09:16:24 +02:00
parent d67543b9ac
commit af0e7a6193
3 changed files with 14 additions and 4 deletions

View File

@ -4974,3 +4974,7 @@ Video Disk Recorder Revision History
- Fixed setting audio track descriptions after a replay has been stopped (reported - Fixed setting audio track descriptions after a replay has been stopped (reported
by Ulf Kiener, thanks to Marco Schlüßler for pointing out what caused the problem). by Ulf Kiener, thanks to Marco Schlüßler for pointing out what caused the problem).
2006-10-28: Version 1.4.3-4
- Fixed deleting EPG events that have a running status of "pausing" or higher.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: config.h 1.275 2006/10/20 13:37:37 kls Exp $ * $Id: config.h 1.276 2006/10/28 09:15:00 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -21,7 +21,7 @@
// VDR's own version number: // VDR's own version number:
#define VDRVERSION "1.4.3-3" #define VDRVERSION "1.4.3-4"
#define VDRVERSNUM 10403 // Version * 10000 + Major * 100 + Minor #define VDRVERSNUM 10403 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number: // The plugin API's version number:

10
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.80 2006/10/07 13:47:28 kls Exp $ * $Id: epg.c 1.81 2006/10/28 09:12:42 kls Exp $
*/ */
#include "epg.h" #include "epg.h"
@ -664,6 +664,8 @@ cEvent *cSchedule::AddEvent(cEvent *Event)
void cSchedule::DelEvent(cEvent *Event) void cSchedule::DelEvent(cEvent *Event)
{ {
if (Event->schedule == this) { if (Event->schedule == this) {
if (hasRunning && Event->IsRunning())
ClrRunningStatus();
UnhashEvent(Event); UnhashEvent(Event);
events.Del(Event); events.Del(Event);
} }
@ -742,8 +744,10 @@ void cSchedule::SetRunningStatus(cEvent *Event, int RunningStatus, cChannel *Cha
hasRunning = false; hasRunning = false;
for (cEvent *p = events.First(); p; p = events.Next(p)) { for (cEvent *p = events.First(); p; p = events.Next(p)) {
if (p == Event) { if (p == Event) {
if (p->RunningStatus() > SI::RunningStatusNotRunning || RunningStatus > SI::RunningStatusNotRunning) if (p->RunningStatus() > SI::RunningStatusNotRunning || RunningStatus > SI::RunningStatusNotRunning) {
p->SetRunningStatus(RunningStatus, Channel); p->SetRunningStatus(RunningStatus, Channel);
break;
}
} }
else if (RunningStatus >= SI::RunningStatusPausing && p->StartTime() < Event->StartTime()) else if (RunningStatus >= SI::RunningStatusPausing && p->StartTime() < Event->StartTime())
p->SetRunningStatus(SI::RunningStatusNotRunning); p->SetRunningStatus(SI::RunningStatusNotRunning);
@ -797,6 +801,8 @@ void cSchedule::DropOutdated(time_t SegmentStart, time_t SegmentEnd, uchar Table
// We can't delete the event right here because a timer might have // 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 // a pointer to it, so let's set its id and start time to 0 to have it
// "phased out": // "phased out":
if (hasRunning && p->IsRunning())
ClrRunningStatus();
UnhashEvent(p); UnhashEvent(p);
p->eventID = 0; p->eventID = 0;
p->startTime = 0; p->startTime = 0;