aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-17 13:30:13 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-17 13:30:13 +0000
commit40d11af2de7aed77c90970ba2b61dd754a225117 (patch)
tree5946320734392ebc8a83c02eed9153ad45c3ea32 /lib
parent2ce501a469cb168b98708fd8425679f2006b7b93 (diff)
downloadenigma2-40d11af2de7aed77c90970ba2b61dd754a225117.tar.gz
enigma2-40d11af2de7aed77c90970ba2b61dd754a225117.zip
use parent service reference for query EPG to build a .eit file when a parent is avail
(on subservices)
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/idvb.h14
-rw-r--r--lib/service/servicedvbrecord.cpp7
2 files changed, 19 insertions, 2 deletions
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 )
{