diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-12 19:56:42 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-12 19:56:42 +0000 |
| commit | 7d9a03383fba0b90090e678812c30153a1d3d5a2 (patch) | |
| tree | b7fdd0de9841ac7a85e85b2b4cd7a746086e0020 /lib/dvb/epgcache.cpp | |
| parent | 7a8fff2da5f732bad0beaf934e7a20395b4921bd (diff) | |
| download | enigma2-7d9a03383fba0b90090e678812c30153a1d3d5a2.tar.gz enigma2-7d9a03383fba0b90090e678812c30153a1d3d5a2.zip | |
fix show currently running events in channellist ( in favourite list )
Diffstat (limited to 'lib/dvb/epgcache.cpp')
| -rw-r--r-- | lib/dvb/epgcache.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index fb121ae8..b2157693 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -1008,10 +1008,25 @@ RESULT eEPGCache::lookupEventTime(const eServiceReference &service, time_t t, co { if (!t) t = time(0)+eDVBLocalTimeHandler::getInstance()->difference(); - - timeMap::iterator i = It->second.second.lower_bound(t); - if ( i != It->second.second.end() && t <= i->first+i->second->getDuration() ) + timeMap::iterator i = It->second.second.lower_bound(t); // find > or equal + if ( i != It->second.second.end() ) { + if ( i->second->getStartTime() != t ) + { + timeMap::iterator x = i; + --x; + if ( x != It->second.second.end() ) + { + time_t start_time = x->second->getStartTime(); + if (t < start_time) + return -1; + if (t > (start_time+x->second->getDuration())) + return -1; + i = x; + } + else + return -1; + } result = i->second; return 0; } |
