X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/20fc6d7c0f9a9f23217b9562a743ab681cd33f75..462ec6f4ad2051551cb91c75ba614d3b7b17c543:/lib/dvb/scan.cpp diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp index e1bd0012..7f4f6b10 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -231,7 +231,7 @@ void eDVBScan::addChannelToScan(const eDVBChannelID &chid, iDVBFrontendParameter return; /* otherwise, add it to the todo list. */ - m_ch_toScan.push_back(feparm); + m_ch_toScan.push_front(feparm); // better.. then the rotor not turning wild from east to west :) } int eDVBScan::sameChannel(iDVBFrontendParameters *ch1, iDVBFrontendParameters *ch2) const @@ -375,6 +375,7 @@ void eDVBScan::start(const eSmartPtrList &known_transpon m_ch_unavailable.clear(); m_new_channels.clear(); m_new_services.clear(); + m_last_service = m_new_services.end(); for (eSmartPtrList::const_iterator i(known_transponders.begin()); i != known_transponders.end(); ++i) { @@ -469,7 +470,13 @@ RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescription } } - m_new_services.insert(std::pair >(ref, service)); + std::pair >::iterator, bool> i = m_new_services.insert(std::pair >(ref, service)); + + if (i.second) + { + m_last_service = i.first; + m_event(evtNewService); + } } return 0; } @@ -486,3 +493,11 @@ void eDVBScan::getStats(int &transponders_done, int &transponders_total, int &se transponders_total = m_ch_toScan.size() + transponders_done; services = m_new_services.size(); } + +void eDVBScan::getLastServiceName(std::string &last_service_name) +{ + if (m_last_service == m_new_services.end()) + last_service_name = ""; + else + last_service_name = m_last_service->second->m_service_name; +}