aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-01-14 17:59:32 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-01-14 17:59:32 +0000
commitcc9862b55b147eb78581813ba70d574940ac103d (patch)
tree895468d5149bb56e7f751c98ea6c42d168736e5c /lib/dvb
parent742956672b795d0ffa44575f9a8e0255b768915c (diff)
downloadenigma2-cc9862b55b147eb78581813ba70d574940ac103d.tar.gz
enigma2-cc9862b55b147eb78581813ba70d574940ac103d.zip
display last 7 services during scan
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/scan.cpp17
-rw-r--r--lib/dvb/scan.h4
2 files changed, 19 insertions, 2 deletions
diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp
index ba63ed9f..7f4f6b10 100644
--- a/lib/dvb/scan.cpp
+++ b/lib/dvb/scan.cpp
@@ -375,6 +375,7 @@ void eDVBScan::start(const eSmartPtrList<iDVBFrontendParameters> &known_transpon
m_ch_unavailable.clear();
m_new_channels.clear();
m_new_services.clear();
+ m_last_service = m_new_services.end();
for (eSmartPtrList<iDVBFrontendParameters>::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<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
+ std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i = m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(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;
+}
diff --git a/lib/dvb/scan.h b/lib/dvb/scan.h
index 11d0efdc..2756fb12 100644
--- a/lib/dvb/scan.h
+++ b/lib/dvb/scan.h
@@ -40,6 +40,7 @@ private:
std::map<eDVBChannelID, ePtr<iDVBFrontendParameters> > m_new_channels;
std::map<eServiceReferenceDVB, ePtr<eDVBService> > m_new_services;
+ std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_last_service;
std::list<ePtr<iDVBFrontendParameters> > m_ch_toScan, m_ch_scanned, m_ch_unavailable;
ePtr<iDVBFrontendParameters> m_ch_current;
@@ -70,11 +71,12 @@ public:
enum { scanNetworkSearch = 1, scanSearchBAT = 2 };
void start(const eSmartPtrList<iDVBFrontendParameters> &known_transponders, int flags);
- enum { evtUpdate, evtFinish, evtFail };
+ enum { evtUpdate, evtNewService, evtFinish, evtFail };
RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &connection);
void insertInto(iDVBChannelList *db);
void getStats(int &transponders_done, int &transponders_total, int &services);
+ void getLastServiceName(std::string &name);
};
#endif