stop update length timer when a movie was selected
[enigma2.git] / lib / dvb / pmt.cpp
index c06701113178b080b9f061840d1dbd06765133ea..679d7a8f09dcd3235d2355c4b4442a98245b9da8 100644 (file)
@@ -145,7 +145,7 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
        program.pmtPid = -1;
        program.textPid = -1;
 
-       if (!m_PMT.getCurrent(ptr))
+       if ( ((m_service && m_service->usePMT()) || !m_service) && !m_PMT.getCurrent(ptr))
        {
                int cached_apid_ac3 = -1;
                int cached_apid_mpeg = -1;
@@ -350,6 +350,8 @@ int eDVBServicePMTHandler::getDecodeDemux(ePtr<iDVBDemux> &demux)
                demux = m_demux;
                return ret;
        }
+       
+       ASSERT(m_channel); /* calling without a previous ::tune is certainly bad. */
 
        ret = m_channel->getDemux(demux, iDVBChannel::capDecode);
        if (!ret)
@@ -401,7 +403,6 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                                        m_pmt_pid = pmt_pid;
                                }
                        }
-                       
                } else
                        m_reference = parser.m_ref;
                
@@ -412,7 +413,11 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                        eDebug("allocatePVRChannel failed!\n");
                m_channel = m_pvr_channel;
        }
-       
+
+       ePtr<iDVBChannelList> db;
+       if (!m_resourceManager->getChannelList(db))
+               db->getService((eServiceReferenceDVB&)m_reference, m_service);
+
        if (m_channel)
        {
                m_channel->connectStateChange(
@@ -436,10 +441,6 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                m_pvr_channel->playFile(ref.path.c_str());
        }
 
-       ePtr<iDVBChannelList> db;
-       if (!m_resourceManager->getChannelList(db))
-               db->getService((eServiceReferenceDVB&)m_reference, m_service);
-
        return res;
 }