aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/epgcache.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-07-25 20:54:00 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-07-25 20:54:00 +0000
commit761cde6e77261e8ee7680510705b6283a734c2af (patch)
tree2aed68b634f99cf15bdecc7507ad760b9135c1c9 /lib/dvb/epgcache.cpp
parent24ac423a92cf63ed6a8a09fa1ef48bef2c9382a6 (diff)
downloadenigma2-761cde6e77261e8ee7680510705b6283a734c2af.tar.gz
enigma2-761cde6e77261e8ee7680510705b6283a734c2af.zip
more speedups
Diffstat (limited to 'lib/dvb/epgcache.cpp')
-rw-r--r--lib/dvb/epgcache.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp
index 550561e2..81b96a82 100644
--- a/lib/dvb/epgcache.cpp
+++ b/lib/dvb/epgcache.cpp
@@ -1587,7 +1587,7 @@ RESULT eEPGCache::getNextTimeEntry(ePtr<eServiceEvent> &result)
return -1;
}
-void fillTuple(ePyObject tuple, char *argstring, int argcount, ePyObject service, ePtr<eServiceEvent> &ptr, ePyObject nowTime, ePyObject service_name )
+void fillTuple(ePyObject tuple, char *argstring, int argcount, ePyObject service, eServiceEvent *ptr, ePyObject nowTime, ePyObject service_name )
{
ePyObject tmp;
int pos=0;
@@ -1641,7 +1641,7 @@ void fillTuple(ePyObject tuple, char *argstring, int argcount, ePyObject service
}
}
-int handleEvent(ePtr<eServiceEvent> &ptr, ePyObject dest_list, char* argstring, int argcount, ePyObject service, ePyObject nowTime, ePyObject service_name, ePyObject convertFunc, ePyObject convertFuncArgs)
+int handleEvent(eServiceEvent *ptr, ePyObject dest_list, char* argstring, int argcount, ePyObject service, ePyObject nowTime, ePyObject service_name, ePyObject convertFunc, ePyObject convertFuncArgs)
{
if (convertFunc)
{
@@ -1861,10 +1861,12 @@ PyObject *eEPGCache::lookupEvent(ePyObject list, ePyObject convertFunc)
Lock();
if (!startTimeQuery(ref, stime, minutes))
{
- ePtr<eServiceEvent> ptr;
- while (!getNextTimeEntry(ptr))
+ while ( m_timemap_cursor != m_timemap_end )
{
- if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+ Event ev((uint8_t*)m_timemap_cursor++->second->get());
+ eServiceEvent evt;
+ evt.parseFrom(&ev, currentQueryTsidOnid);
+ if (handleEvent(&evt, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
{
Unlock();
return 0; // error
@@ -1875,15 +1877,21 @@ PyObject *eEPGCache::lookupEvent(ePyObject list, ePyObject convertFunc)
}
else
{
- ePtr<eServiceEvent> ptr;
+ eServiceEvent evt;
+ Event *ev=0;
if (stime)
{
if (type == 2)
- lookupEventId(ref, event_id, ptr);
+ lookupEventId(ref, event_id, ev);
else
- lookupEventTime(ref, stime, ptr, type);
+ lookupEventTime(ref, stime, ev, type);
+ if (ev)
+ {
+ const eServiceReferenceDVB &dref = (const eServiceReferenceDVB&)ref;
+ evt.parseFrom(ev, (dref.getTransportStreamID().get()<<16)|dref.getOriginalNetworkID().get());
+ }
}
- if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+ if (handleEvent(ev ? &evt : 0, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
return 0; // error
}
if (service_changed)
@@ -1901,7 +1909,7 @@ skip_entry:
return dest_list;
}
-void fillTuple2(ePyObject tuple, const char *argstring, int argcount, eventData *evData, ePtr<eServiceEvent> &ptr, ePyObject service_name, ePyObject service_reference)
+void fillTuple2(ePyObject tuple, const char *argstring, int argcount, eventData *evData, eServiceEvent *ptr, ePyObject service_name, ePyObject service_reference)
{
ePyObject tmp;
int pos=0;
@@ -2239,11 +2247,11 @@ PyObject *eEPGCache::search(ePyObject arg)
if (ref.valid())
{
// create servive event
- ePtr<eServiceEvent> ptr;
+ eServiceEvent ptr;
+ Event *ev=0;
if (needServiceEvent)
{
- lookupEventId(ref, evid, ptr);
- if (!ptr)
+ if (lookupEventId(ref, evid, ev))
eDebug("event not found !!!!!!!!!!!");
}
// create service name
@@ -2292,7 +2300,7 @@ PyObject *eEPGCache::search(ePyObject arg)
// create tuple
ePyObject tuple = PyTuple_New(argcount);
// fill tuple
- fillTuple2(tuple, argstring, argcount, evit->second, ptr, service_name, service_reference);
+ fillTuple2(tuple, argstring, argcount, evit->second, ev ? &ptr : 0, service_name, service_reference);
PyList_Append(ret, tuple);
Py_DECREF(tuple);
--maxcount;