diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-06 16:31:02 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-06 16:31:02 +0000 |
| commit | 29f60fdaf6f0ff1dd112c9e0e913ec734b304bf1 (patch) | |
| tree | 19a8157a3d3427d1274e83b8807fc2f190be34ff /lib/dvb/epgcache.cpp | |
| parent | 8acc9a009ec9412ab25acef4e02a27d4e9f905d9 (diff) | |
| download | enigma2-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.cpp | 21 |
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); } |
