aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-04-29 19:54:45 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-04-29 19:54:45 +0000
commita9939e31b86e340d93aad3d6eb450352ca8323d7 (patch)
treed5fc848565452b5a3fb03a387336c31292cbe7a5 /lib/dvb
parent9a632d21c0c849f2e08d388df916e055fbaf42ca (diff)
downloadenigma2-a9939e31b86e340d93aad3d6eb450352ca8323d7.tar.gz
enigma2-a9939e31b86e340d93aad3d6eb450352ca8323d7.zip
implement dxDontshow flag.. its not possible to set this flag in e2 self..
just with external settings editors.... (untested yet)
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/db.cpp22
-rw-r--r--lib/dvb/idvb.h3
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<eDVBService> 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<eServiceReferenceDVB, ePtr<eDVBService> >::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<eServiceReferenceDVB, ePtr<eDVBService> >::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<eServiceReferenceDVB, ePtr<eDVBService> >::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;