From a9939e31b86e340d93aad3d6eb450352ca8323d7 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Tue, 29 Apr 2008 19:54:45 +0000 Subject: [PATCH] implement dxDontshow flag.. its not possible to set this flag in e2 self.. just with external settings editors.... (untested yet) --- lib/dvb/db.cpp | 22 ++++++++++++++-------- lib/dvb/idvb.h | 3 ++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index e4a97713..f9c8938c 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -1480,14 +1480,20 @@ RESULT eDVBDBQuery::getNextResult(eServiceReferenceDVB &ref) { while (m_cursor != m_db->m_services.end()) { - ref = m_cursor->first; + ePtr service = m_cursor->second; + if (service->isHidden()) + ++m_cursor; + else + { + ref = m_cursor->first; - int res = (!m_query) || m_cursor->second->checkFilter(ref, *m_query); + int res = (!m_query) || service->checkFilter(ref, *m_query); - ++m_cursor; + ++m_cursor; - if (res) - return 0; + if (res) + return 0; + } } ref.type = eServiceReference::idInvalid; @@ -1511,7 +1517,7 @@ RESULT eDVBDBBouquetQuery::getNextResult(eServiceReferenceDVB &ref) std::map >::iterator it = m_db->m_services.find(ref); - int res = (!m_query) || it == m_db->m_services.end() || it->second->checkFilter(ref, *m_query); + int res = (!m_query) || it == m_db->m_services.end() || !it->second->isHidden() && it->second->checkFilter(ref, *m_query); ++m_cursor; @@ -1565,7 +1571,7 @@ eDVBDBSatellitesQuery::eDVBDBSatellitesQuery(eDVBDB *db, const eServiceReference for (std::map >::iterator it(m_db->m_services.begin()); it != m_db->m_services.end(); ++it) { - int res = it->second->checkFilter(it->first, *query); + int res = !it->second->isHidden() && it->second->checkFilter(it->first, *query); if (res) { unsigned int dvbnamespace = it->first.getDVBNamespace().get()&0xFFFF0000; @@ -1612,7 +1618,7 @@ eDVBDBProvidersQuery::eDVBDBProvidersQuery(eDVBDB *db, const eServiceReference & for (std::map >::iterator it(m_db->m_services.begin()); it != m_db->m_services.end(); ++it) { - int res = it->second->checkFilter(it->first, *query); + int res = !it->second->isHidden() && it->second->checkFilter(it->first, *query); if (res) { const char *provider_name = it->second->m_provider_name.length() ? diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 3a5ef427..11bbbf8e 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -297,13 +297,14 @@ public: enum { dxNoSDT=1, // don't get SDT -//nyi dxDontshow=2, + dxDontshow=2, dxNoDVB=4, // dont use PMT for this service ( use cached pids ) dxHoldName=8, dxNewFound=64, }; bool usePMT() const { return !(m_flags & dxNoDVB); } + bool isHidden() const { return m_flags & dxDontshow; } CAID_LIST m_ca; -- 2.30.2