same fix for slowMotion
[enigma2.git] / lib / dvb / pmt.cpp
index 13734e0d75278fc1315d443a788aec6f03e09a87..692428d7c9c6262babeb1057444544a5e316ff5a 100644 (file)
@@ -135,19 +135,7 @@ void eDVBServicePMTHandler::PATready(int)
                if (pmtpid == -1)
                        serviceEvent(eventNoPATEntry);
                else
-               { // here we know a pat entry for this service id exist
                        m_PMT.begin(eApp, eDVBPMTSpec(pmtpid, m_reference.getServiceID().get()), m_demux);
-                       if (m_reference.path.empty())
-                       { // also check the tsid now before start sdt update
-                               eDVBChannelID chid;
-                               m_reference.getChannelID(chid);
-                               if (eTransportStreamID((*i)->getTableIdExtension()) == chid.transport_stream_id)
-                               {
-                                       m_dvb_scan = new eDVBScan(m_channel, true, false);
-                                       m_dvb_scan->connectEvent(slot(*this, &eDVBServicePMTHandler::SDTScanEvent), m_scan_event_connection);
-                               }
-                       }
-               }
        } else
                serviceEvent(eventNoPAT);
 }
@@ -536,8 +524,15 @@ void eDVBServicePMTHandler::SDTScanEvent(int event)
                                eDebug("no channel list");
                        else
                        {
-                               m_dvb_scan->insertInto(db, true);
-                               eDebug("sdt update done!");
+                               eDVBChannelID chid;
+                               m_reference.getChannelID(chid);
+                               if (chid == m_dvb_scan->getCurrentChannelID())
+                               {
+                                       m_dvb_scan->insertInto(db, true);
+                                       eDebug("sdt update done!");
+                               }
+                               else
+                                       eDebug("ignore sdt update data.... incorrect transponder tuned!!!");
                        }
                        break;
                }
@@ -616,7 +611,11 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux,
                                m_channelEvent_connection);
 
                        if (ref.path.empty())
+                       {
                                m_dvb_scan = 0;
+                               m_dvb_scan = new eDVBScan(m_channel, true, false);
+                               m_dvb_scan->connectEvent(slot(*this, &eDVBServicePMTHandler::SDTScanEvent), m_scan_event_connection);
+                       }
                } else
                {
                        if (res == eDVBResourceManager::errAllSourcesBusy)