From f99c11b6335c28204d0e3dbf8ebfd287279d2939 Mon Sep 17 00:00:00 2001 From: Dimitar Petrovski Date: Sun, 3 Jun 2012 22:24:00 +0200 Subject: fix wrong conflict resolution modify the long events dispose logic --- eepg.c | 9 +++++++++ epghandler.c | 11 +++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/eepg.c b/eepg.c index 3fce100..1361b72 100644 --- a/eepg.c +++ b/eepg.c @@ -1368,6 +1368,15 @@ void cFilterEEPG::WriteToSchedule (tChannelID channelID, cSchedules* pSchedules, } if (ps && newEvent) ps->AddEvent (newEvent); + + EquivHandler->updateEquivalent(pSchedules, channelID, Event); + + if (!ps) { + //the event is not send to VDR so it has to be deleted. + delete Event; + Event = NULL; + } + //newEvent->FixEpgBugs (); causes segfault } /* else diff --git a/epghandler.c b/epghandler.c index e323ed1..44ee909 100644 --- a/epghandler.c +++ b/epghandler.c @@ -34,13 +34,16 @@ bool cEEpgHandler::HandleEitEvent(cSchedule* Schedule, if (EitEvent->getDurationHour() > _LONG_EVENT_HOURS) { LogD(4, prep("Event longer than 10h Duration:%d DurationHour:%d StartTimeHour:%d"), EitEvent->getDuration(), EitEvent->getDurationHour(), EitEvent->getStartTimeHour()); const cEvent* exEvent = Schedule->GetEventAround(EitEvent->getStartTime()+EitEvent->getDuration()/3); - const cEvent* exEvent2 = (const cEvent*)exEvent->Next(); - if (exEvent && exEvent2 && difftime (exEvent2->EndTime(),EitEvent->getStartTime()+EitEvent->getDuration()) <= 0 ) { - LogD(3, prep("EitEvent overrides existing events '%s', '%s' ... Skipping"), exEvent->Title(), exEvent2->Title()); - return true; + if (exEvent) { + const cEvent* exEvent2 = Schedule->GetEventAround(EitEvent->getStartTime()+EitEvent->getDuration()/3*2); + if (exEvent2 && exEvent != exEvent2) { + LogD(2, prep("EitEvent overrides existing events '%s', '%s' ... Skipping"), *exEvent->Title(), *exEvent2->Title()); + return true; + } } } + return false; // return true; } -- cgit v1.2.3