From f3078c3363b29cdb8ccf05cbb251392966137977 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 3 Nov 2008 21:05:52 +0100 Subject: [PATCH] dont do SDT update when tuned to wrong transponder --- lib/dvb/pmt.cpp | 12 ++++++++++-- lib/dvb/scan.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 6082bf4..692428d 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -524,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; } @@ -605,6 +612,7 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, 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); } diff --git a/lib/dvb/scan.h b/lib/dvb/scan.h index 95e3fb3..38ac784 100644 --- a/lib/dvb/scan.h +++ b/lib/dvb/scan.h @@ -110,6 +110,7 @@ public: void getLastServiceName(std::string &name); RESULT getFrontend(ePtr &); RESULT getCurrentTransponder(ePtr &); + eDVBChannelID getCurrentChannelID() { return m_chid_current; } }; #endif -- 2.7.4