X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a2db874464833311586936a3d658c302d9dde109..bf172c73819b5c577d64afcf86c1eb8852a086a3:/lib/dvb/pmt.cpp diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 13734e0d..692428d7 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -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)