summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY2
-rw-r--r--eit.c7
-rw-r--r--epg.c11
-rw-r--r--epg.h6
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
diff --git a/HISTORY b/HISTORY
index bbf20773..8ec4e410 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/eit.c b/eit.c
index cf64e89f..3cc097e9 100644
--- a/eit.c
+++ b/eit.c
@@ -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)
diff --git a/epg.c b/epg.c
index 51582e8f..8e2af140 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 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)) {
diff --git a/epg.h b/epg.h
index fc1e410f..fc05c222 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 <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);
};