X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3c63f506284a82e013ab8c02af0b2779e5168d09..fdad4815a5c267a5f20f10604617b833d85ec32e:/lib/dvb/epgcache.cpp diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index c412fd59..6c98011b 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -46,7 +46,6 @@ const eServiceReference &handleGroup(const eServiceReference &ref) return ref; } - eventData::eventData(const eit_event_struct* e, int size, int type) :ByteSize(size&0xFF), type(type&0xFF) { @@ -227,7 +226,11 @@ eEPGCache::eEPGCache() if (!res_mgr) eDebug("[eEPGCache] no resource manager !!!!!!!"); else + { res_mgr->connectChannelAdded(slot(*this,&eEPGCache::DVBChannelAdded), m_chanAddedConn); + if (eDVBLocalTimeHandler::getInstance()->ready()) + timeUpdated(); + } instance=this; } @@ -564,29 +567,25 @@ void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel) #endif if (ev_erase_count > 0 && tm_erase_count > 0) // 2 different pairs have been removed { - eventData *tmp1 = ev_it->second, - *tmp2 = tm_it->second; + // exempt memory + delete ev_it->second; + delete tm_it->second; ev_it->second=evt; tm_it->second=evt; - // exempt memory - delete tmp1; - delete tmp2; } else if (ev_erase_count == 0 && tm_erase_count > 0) { - eventData *tmp = ev_it->second; + // exempt memory + delete ev_it->second; tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair( TM, evt ) ); ev_it->second=evt; - // exempt memory - delete tmp; } else if (ev_erase_count > 0 && tm_erase_count == 0) { - eventData *tmp = tm_it->second; + // exempt memory + delete tm_it->second; ev_it=prevEventIt=servicemap.first.insert( prevEventIt, std::pair( event_id, evt) ); tm_it->second=evt; - // exempt memory - delete tmp; } else // added new eventData { @@ -862,10 +861,10 @@ void eEPGCache::thread() void eEPGCache::load() { - singleLock s(cache_lock); FILE *f = fopen("/hdd/epg.dat", "r"); if (f) { + unlink("/hdd/epg.dat"); int size=0; int cnt=0; #if 0 @@ -899,6 +898,7 @@ void eEPGCache::load() fread( text1, 13, 1, f); if ( !strncmp( text1, "ENIGMA_EPG_V7", 13) ) { + singleLock s(cache_lock); fread( &size, sizeof(int), 1, f); while(size--) {