aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvb.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-07-12 13:40:39 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-07-12 13:40:39 +0000
commit1479a77bb6c7c2c4c39514129abb3e73734db783 (patch)
treeecbe95757d653d0675e7b942ddd90f1da9b9d686 /lib/service/servicedvb.cpp
parent81f8c357101ac8b250e763ff815ee302bf0a8058 (diff)
downloadenigma2-1479a77bb6c7c2c4c39514129abb3e73734db783.tar.gz
enigma2-1479a77bb6c7c2c4c39514129abb3e73734db783.zip
fix segfault
Diffstat (limited to 'lib/service/servicedvb.cpp')
-rw-r--r--lib/service/servicedvb.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 8f288982..bae45aae 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -752,9 +752,6 @@ RESULT eDVBServicePlay::start()
eServiceReferenceDVB &service = (eServiceReferenceDVB&)m_reference;
r = m_service_handler.tune(service, m_is_pvr, m_cue);
- // get back correct service reference (after parsing of recording meta files)
- m_service_handler.getServiceReference(service);
-
/* inject EIT if there is a stored one */
if (m_is_pvr)
{
@@ -1695,12 +1692,11 @@ void eDVBServicePlay::updateDecoder()
}
else // subservice or recording
{
- eServiceReferenceDVB parent = ((eServiceReferenceDVB&)m_reference).getParentServiceReference();
- if (!parent && !m_reference.path.empty()) // is recording
- {
- parent = (eServiceReferenceDVB&)m_reference;
- parent.path="";
- }
+ eServiceReferenceDVB ref;
+ m_service_handler.getServiceReference(ref);
+ eServiceReferenceDVB parent = ref.getParentServiceReference();
+ if (!parent)
+ parent = ref;
if (parent)
{
ePtr<eDVBResourceManager> res_mgr;
@@ -1712,14 +1708,13 @@ void eDVBServicePlay::updateDecoder()
ePtr<eDVBService> origService;
if (!db->getService(parent, origService))
{
- ac3_delay = origService->getCacheEntry(eDVBService::cAC3DELAY);
+ ac3_delay = origService->getCacheEntry(eDVBService::cAC3DELAY);
pcm_delay = origService->getCacheEntry(eDVBService::cPCMDELAY);
}
}
}
}
}
-
m_decoder->setAC3Delay(ac3_delay == -1 ? 0 : ac3_delay);
m_decoder->setPCMDelay(pcm_delay == -1 ? 0 : pcm_delay);