git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
convert About screen to source/renderer system. Change names a bit, add enigma versio...
[enigma2.git]
/
lib
/
dvb
/
epgcache.cpp
diff --git
a/lib/dvb/epgcache.cpp
b/lib/dvb/epgcache.cpp
index 4b4e6a8843cdc035e4052198d24e30e7c4269bef..247b0c05d21d5582cb3c24cf7fa13162477cec61 100644
(file)
--- a/
lib/dvb/epgcache.cpp
+++ b/
lib/dvb/epgcache.cpp
@@
-372,8
+372,9
@@
void eEPGCache::DVBChannelStateChanged(iDVBChannel *chan)
}
}
}
}
-
void
eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t TM, int duration, const timeMap::iterator &tm_it, const uniqueEPGKey &service)
+
bool
eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t TM, int duration, const timeMap::iterator &tm_it, const uniqueEPGKey &service)
{
{
+ bool ret = false;
timeMap::iterator tmp = tm_it;
while ((tmp->first+tmp->second->getDuration()-300) > TM)
{
timeMap::iterator tmp = tm_it;
while ((tmp->first+tmp->second->getDuration()-300) > TM)
{
@@
-406,6
+407,7
@@
void eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t T
}
else
servicemap.second.erase(tmp--);
}
else
servicemap.second.erase(tmp--);
+ ret = true;
}
else
{
}
else
{
@@
-434,12
+436,14
@@
void eEPGCache::FixOverlapping(std::pair<eventMap,timeMap> &servicemap, time_t T
#endif
delete tmp->second;
servicemap.second.erase(tmp++);
#endif
delete tmp->second;
servicemap.second.erase(tmp++);
+ ret = true;
}
else
++tmp;
if (tmp == servicemap.second.end())
break;
}
}
else
++tmp;
if (tmp == servicemap.second.end())
break;
}
+ return ret;
}
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
}
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
@@
-523,7
+527,11
@@
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
eventData *tmp = ev_it->second;
ev_it->second = tm_it_tmp->second =
new eventData(eit_event, eit_event_size, source);
eventData *tmp = ev_it->second;
ev_it->second = tm_it_tmp->second =
new eventData(eit_event, eit_event_size, source);
- FixOverlapping(servicemap, TM, duration, tm_it_tmp, service);
+ if (FixOverlapping(servicemap, TM, duration, tm_it_tmp, service))
+ {
+ prevEventIt = servicemap.first.end();
+ prevTimeIt = servicemap.second.end();
+ }
delete tmp;
goto next;
}
delete tmp;
goto next;
}
@@
-596,8
+604,6
@@
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair<const time_t, eventData*>( TM, evt ) );
}
tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair<const time_t, eventData*>( TM, evt ) );
}
- FixOverlapping(servicemap, TM, duration, tm_it, service);
-
#ifdef EPG_DEBUG
if ( consistencyCheck )
{
#ifdef EPG_DEBUG
if ( consistencyCheck )
{
@@
-617,6
+623,11
@@
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
ev_it->first, event_id );
}
#endif
ev_it->first, event_id );
}
#endif
+ if (FixOverlapping(servicemap, TM, duration, tm_it, service))
+ {
+ prevEventIt = servicemap.first.end();
+ prevTimeIt = servicemap.second.end();
+ }
}
next:
#ifdef EPG_DEBUG
}
next:
#ifdef EPG_DEBUG
@@
-2503,7
+2514,7
@@
void eEPGCache::privateSectionRead(const uniqueEPGKey ¤t_service, const __
case 0x0300f5: sid = 0xdc; break;
case 0x0400d2: sid = 0xe2; tsid = 0x11; break;
case 0x1100d3: sid = 0xe3; break;
case 0x0300f5: sid = 0xdc; break;
case 0x0400d2: sid = 0xe2; tsid = 0x11; break;
case 0x1100d3: sid = 0xe3; break;
- case 0x0100
e4: sid = 0xe
4; break;
+ case 0x0100
d4: sid = 0xe4; tsid =
4; break;
}
}
////////////////////////////////////////////
}
}
////////////////////////////////////////////