From: Andreas Monzner Date: Fri, 17 Mar 2006 13:30:13 +0000 (+0000) Subject: use parent service reference for query EPG to build a .eit file when a parent is... X-Git-Tag: 2.6.0~3803 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/40d11af2de7aed77c90970ba2b61dd754a225117?ds=sidebyside use parent service reference for query EPG to build a .eit file when a parent is avail (on subservices) --- diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 5909e76d..13f20081 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -162,6 +162,20 @@ struct eServiceReferenceDVB: public eServiceReference eTransportStreamID getParentTransportStreamID() const { return eTransportStreamID(data[6]); } void setParentTransportStreamID( eTransportStreamID tsid ) { data[6]=tsid.get(); } + eServiceReferenceDVB getParentServiceReference() const + { + eServiceReferenceDVB tmp(*this); + if (data[4] && data[5]) + { + tmp.data[1] = data[5]; + tmp.data[2] = data[6]; + tmp.data[5] = tmp.data[6] = 0; + } + else + tmp.type = idInvalid; + return tmp; + } + eServiceReferenceDVB(eDVBNamespace dvbnamespace, eTransportStreamID transport_stream_id, eOriginalNetworkID original_network_id, eServiceID service_id, int service_type) :eServiceReference(eServiceReference::idDVB, 0) { diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp index a0359351..e150ae1d 100644 --- a/lib/service/servicedvbrecord.cpp +++ b/lib/service/servicedvbrecord.cpp @@ -48,10 +48,13 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e { eEPGCache::getInstance()->Lock(); const eit_event_struct *event = 0; + eServiceReferenceDVB ref = m_ref.getParentServiceReference(); + if (!ref.valid()) + ref = m_ref; if ( eit_event_id != -1 ) { eDebug("query epg event id %d", eit_event_id); - eEPGCache::getInstance()->lookupEventId(m_ref, eit_event_id, event); + eEPGCache::getInstance()->lookupEventId(ref, eit_event_id, event); } if ( !event && (begTime != -1 && endTime != -1) ) { @@ -64,7 +67,7 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e beg.tm_hour, beg.tm_min, beg.tm_sec, end.tm_hour, end.tm_min, end.tm_sec, query.tm_hour, query.tm_min, query.tm_sec); - eEPGCache::getInstance()->lookupEventTime(m_ref, queryTime, event); + eEPGCache::getInstance()->lookupEventTime(ref, queryTime, event); } if ( event ) {