aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/epgcache.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-05-06 16:31:02 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-05-06 16:31:02 +0000
commit29f60fdaf6f0ff1dd112c9e0e913ec734b304bf1 (patch)
tree19a8157a3d3427d1274e83b8807fc2f190be34ff /lib/dvb/epgcache.cpp
parent8acc9a009ec9412ab25acef4e02a27d4e9f905d9 (diff)
downloadenigma2-29f60fdaf6f0ff1dd112c9e0e913ec734b304bf1.tar.gz
enigma2-29f60fdaf6f0ff1dd112c9e0e913ec734b304bf1.zip
remove no more needed c++ single epg list content class
code cleanup in python epg classes get epg from parent service when epg is queried for a subservice(linkage service)
Diffstat (limited to 'lib/dvb/epgcache.cpp')
-rw-r--r--lib/dvb/epgcache.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp
index 975d46ac..ee61268c 100644
--- a/lib/dvb/epgcache.cpp
+++ b/lib/dvb/epgcache.cpp
@@ -1532,6 +1532,7 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc)
PyObject *item=PyList_GET_ITEM(list, listIt++); // borrowed reference!
if (PyTuple_Check(item))
{
+ bool service_changed=false;
int type=0;
long event_id=-1;
time_t stime=-1;
@@ -1579,6 +1580,24 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc)
eDebug("service reference for epg query is not valid");
continue;
}
+
+ // redirect subservice querys to parent service
+ eServiceReferenceDVB &dvb_ref = (eServiceReferenceDVB&)ref;
+ if (dvb_ref.getParentTransportStreamID().get()) // linkage subservice
+ {
+ eServiceCenterPtr service_center;
+ if (!eServiceCenter::getPrivInstance(service_center))
+ {
+ dvb_ref.setTransportStreamID( dvb_ref.getParentTransportStreamID() );
+ dvb_ref.setServiceID( dvb_ref.getParentServiceID() );
+ dvb_ref.setParentTransportStreamID(eTransportStreamID(0));
+ dvb_ref.setParentServiceID(eServiceID(0));
+ dvb_ref.name="";
+ service = PyString_FromString(dvb_ref.toString().c_str());
+ service_changed = true;
+ }
+ }
+
PyObject *service_name=NULL;
if (must_get_service_name)
{
@@ -1628,6 +1647,8 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc)
if (ret)
return ret;
}
+ if (service_changed)
+ Py_DECREF(service);
if (service_name)
Py_DECREF(service_name);
}