diff options
-rw-r--r-- | CONTRIBUTORS | 3 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | eit.c | 7 | ||||
-rw-r--r-- | epg.c | 11 | ||||
-rw-r--r-- | epg.h | 6 |
5 files changed, 26 insertions, 3 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d4ccb893..39b21cd6 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2895,3 +2895,6 @@ Marco Skambraks <marco@ammec.de> Christian Richter <cr@crichter.net> for extending the interface to the script that gets called for recordings, so that in the "edited" case it also provides the name of the original recording + +Christian Kaiser <christian.kaiser@teleservice.com> + for adding DeleteEvent() to the EPG handler interface @@ -7142,3 +7142,5 @@ Video Disk Recorder Revision History - Extended the interface to the script that gets called for recordings, so that in the "edited" case it also provides the name of the original recording (thanks to Christian Richter). +- Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger + deleting of an event (thanks to Christian Kaiser). @@ -8,7 +8,7 @@ * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * - * $Id: eit.c 2.16 2012/03/14 10:11:15 kls Exp $ + * $Id: eit.c 2.17 2012/06/02 14:05:22 kls Exp $ */ #include "eit.h" @@ -290,6 +290,11 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo channel->SetLinkChannels(LinkChannels); Modified = true; EpgHandlers.HandleEvent(pEvent); + + if (EpgHandlers.DeleteEvent(pEvent)) { + pSchedule->DelEvent(pEvent); + pEvent = NULL; + } } if (Tid == 0x4E) { if (Empty && getSectionNumber() == 0) @@ -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 2.13 2012/05/13 13:46:56 kls Exp $ + * $Id: epg.c 2.14 2012/06/02 14:08:12 kls Exp $ */ #include "epg.h" @@ -1429,6 +1429,15 @@ void cEpgHandlers::HandleEvent(cEvent *Event) } } +bool cEpgHandlers::DeleteEvent(const cEvent *Event) +{ + for (cEpgHandler *eh = First(); eh; eh = Next(eh)) { + if (eh->DeleteEvent(Event)) + return true; + } + return false; +} + void cEpgHandlers::SortSchedule(cSchedule *Schedule) { for (cEpgHandler *eh = First(); eh; eh = Next(eh)) { @@ -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.h 2.9 2012/05/13 13:45:50 kls Exp $ + * $Id: epg.h 2.10 2012/06/02 14:07:51 kls Exp $ */ #ifndef __EPG_H @@ -258,6 +258,9 @@ public: virtual bool HandleEvent(cEvent *Event) { return false; } ///< After all modifications of the Event have been done, the EPG handler ///< can take a final look at it. + virtual bool DeleteEvent(const cEvent *Event) { return false; } + ///< After the complete processing of the Event is finished, an EPG handler + ///< can decide that this Event shall be deleted from its schedule. virtual bool SortSchedule(cSchedule *Schedule) { return false; } ///< Sorts the Schedule after the complete table has been processed. virtual bool DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version) { return false; } @@ -280,6 +283,7 @@ public: void SetVps(cEvent *Event, time_t Vps); void FixEpgBugs(cEvent *Event); void HandleEvent(cEvent *Event); + bool DeleteEvent(const cEvent *Event); void SortSchedule(cSchedule *Schedule); void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version); }; |