try to find a valid pmt pid in ts file when the service id in recordins.epl
[enigma2.git] / lib / dvb / pmt.cpp
index 1d9ca83d05c0bb8da50851aee5444ebe62b18a4e..255b8765a92737125050c951fecd2549f1b2191a 100644 (file)
@@ -87,9 +87,9 @@ void eDVBServicePMTHandler::PMTready(int error)
        {
                m_have_cached_program = false;
                serviceEvent(eventNewProgramInfo);
-               eEPGCache::getInstance()->PMTready(this);
                if (!m_pvr_channel) // don't send campmt to camd.socket for playbacked services
                {
+                       eEPGCache::getInstance()->PMTready(this);
                        if(!m_ca_servicePtr)
                        {
                                int demuxes[2] = {0,0};
@@ -496,8 +496,9 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
        } else
        {
                eDVBMetaParser parser;
-               
-               if (parser.parseFile(ref.path))
+
+               int ret=parser.parseFile(ref.path);
+               if (ret || !parser.m_ref.getServiceID().get() /* incorrect sid in meta file or recordings.epl*/ )
                {
                        eWarning("no .meta file found, trying to find PMT pid");
                        eDVBTSTools tstools;
@@ -865,7 +866,7 @@ static PyObject *createTuple(int pid, const char *type)
        return r;
 }
 
-static inline PyObject PyList_AppendSteal(PyObject *list, PyObject *item)
+static inline void PyList_AppendSteal(PyObject *list, PyObject *item)
 {
        PyList_Append(list, item);
        Py_DECREF(item);