diff options
author | Dimitar Petrovski <dimeptr@gmail.com> | 2012-06-03 22:44:02 +0200 |
---|---|---|
committer | Dimitar Petrovski <dimeptr@gmail.com> | 2012-06-03 22:44:02 +0200 |
commit | a443439bbf37cf77a349aa7d848536505ab9fafa (patch) | |
tree | a3e366ca0ae6a0c054350c8d1d13325aa04eaa00 | |
parent | e456d4cb075717b8544a198a8f303dff43ea53ec (diff) | |
download | vdr-plugin-eepg-a443439bbf37cf77a349aa7d848536505ab9fafa.tar.gz vdr-plugin-eepg-a443439bbf37cf77a349aa7d848536505ab9fafa.tar.bz2 |
revert util.c and moved to separate branch
-rw-r--r-- | util.c | 84 |
1 files changed, 21 insertions, 63 deletions
@@ -9,8 +9,6 @@ #include <vdr/thread.h> #include <vdr/epg.h> -#include <map> - namespace util { @@ -129,33 +127,23 @@ void CleanString (unsigned char *String) // http://projects.vdr-developer.org/projects/plg-epgfixer // by Matti Lehtimaki -//class cAddEventListItem : public cListObject -//{ -//protected: -// cEvent *event; -// tChannelID channelID; -//public: -// cAddEventListItem(cEvent *Event, tChannelID ChannelID) { event = Event; channelID = ChannelID; } -// tChannelID GetChannelID() { return channelID; } -// cEvent *GetEvent() { return event; } -// ~cAddEventListItem() { } -//}; - -struct tChannelIDCompare +class cAddEventListItem : public cListObject { - bool operator() (const tChannelID& lhs, const tChannelID& rhs) const - { - return *lhs.ToString() < *rhs.ToString(); - } +protected: + cEvent *event; + tChannelID channelID; +public: + cAddEventListItem(cEvent *Event, tChannelID ChannelID) { event = Event; channelID = ChannelID; } + tChannelID GetChannelID() { return channelID; } + cEvent *GetEvent() { return event; } + ~cAddEventListItem() { } }; - class cAddEventThread : public cThread { private: cTimeMs LastHandleEvent; -// cList<cAddEventListItem> *list; - std::map<tChannelID,cList<cEvent *>*,tChannelIDCompare> *map_list; + cList<cAddEventListItem> *list; enum { INSERT_TIMEOUT_IN_MS = 10000 }; protected: virtual void Action(void); @@ -168,17 +156,13 @@ public: cAddEventThread::cAddEventThread(void) :cThread("cAddEventThread"), LastHandleEvent() { -// list = new cList<cAddEventListItem>; - map_list = new std::map<tChannelID,cList<cEvent *>*,tChannelIDCompare>; + list = new cList<cAddEventListItem>; } cAddEventThread::~cAddEventThread(void) { LOCK_THREAD; -// list->cList::Clear(); - std::map<tChannelID,cList<cEvent *>*,tChannelIDCompare>::iterator it; - for ( it=map_list->begin() ; it != map_list->end(); it++ ) - (*it).second->cList::Clear(); + list->cList::Clear(); Cancel(3); } @@ -186,36 +170,17 @@ void cAddEventThread::Action(void) { SetPriority(19); while (Running() && !LastHandleEvent.TimedOut()) { -// cAddEventListItem *e = NULL; + cAddEventListItem *e = NULL; cSchedulesLock SchedulesLock(true, 10); cSchedules *schedules = (cSchedules *)cSchedules::Schedules(SchedulesLock); Lock(); -// while (schedules && (e = list->First()) != NULL) { -// cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID(e->GetChannelID()), true); -// schedule->AddEvent(e->GetEvent()); -// EpgHandlers.SortSchedule(schedule); -// EpgHandlers.DropOutdated(schedule, e->GetEvent()->StartTime(), e->GetEvent()->EndTime(), e->GetEvent()->TableID(), e->GetEvent()->Version()); -// list->Del(e); -// } - std::map<tChannelID,cList<cEvent *>*,tChannelIDCompare>::iterator it; - if (schedules) { - for ( it=map_list->begin() ; it != map_list->end(); it++ ) { - (*it).second->cList::Clear(); - cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID((*it).first), true); - while (schedules && ((*it).second->First()) != NULL) { - cEvent* event = *(*it).second->First(); - - cEvent *pEqvEvent = (cEvent *) schedule->GetEvent (event->EventID(), event->StartTime()); - if (pEqvEvent) - schedule->DelEvent(pEqvEvent); - - schedule->AddEvent(event); - (*it).second->Del(event); - } - EpgHandlers.SortSchedule(schedule); - - } - } + while (schedules && (e = list->First()) != NULL) { + cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID(e->GetChannelID()), true); + schedule->AddEvent(e->GetEvent()); + EpgHandlers.SortSchedule(schedule); + EpgHandlers.DropOutdated(schedule, e->GetEvent()->StartTime(), e->GetEvent()->EndTime(), e->GetEvent()->TableID(), e->GetEvent()->Version()); + list->Del(e); + } Unlock(); cCondWait::SleepMs(10); } @@ -224,14 +189,7 @@ void cAddEventThread::Action(void) void cAddEventThread::AddEvent(cEvent *Event, tChannelID ChannelID) { LOCK_THREAD; - if (map_list->empty() || map_list->count(ChannelID) == 0) { - cList<cEvent *>* list = new cList<cEvent *>; - list->Add(Event); - map_list->insert(std::make_pair(ChannelID, list)); - } else { - (*map_list->find(ChannelID)).second->Add(Event); - } -// list->Add(new cAddEventListItem(Event, ChannelID)); + list->Add(new cAddEventListItem(Event, ChannelID)); LastHandleEvent.Set(INSERT_TIMEOUT_IN_MS); } |