DEFINE_REF(eDVBDB);
- /* THIS CODE IS BAD. it should be replaced by somethine better. */
void eDVBDB::reloadServicelist()
+{
+ loadServicelist(CONFIGDIR"/enigma2/lamedb");
+}
+
+ /* THIS CODE IS BAD. it should be replaced by somethine better. */
+void eDVBDB::loadServicelist(const char *file)
{
eDebug("---- opening lame channel db");
- FILE *f=fopen(CONFIGDIR"/enigma2/lamedb", "rt");
- if (!f)
+ FILE *f=fopen(file, "rt");
+ if (!f && strcmp(file, CONFIGDIR"/enigma2/lamedb") == 0)
{
struct stat s;
if ( !stat("lamedb", &s) )
Py_DECREF(sat_pos);
if (sat_name)
Py_DECREF(sat_name);
+ if (sat_flags)
+ Py_DECREF(sat_flags);
}
}
Py_INCREF(Py_True);
if ((unsigned int)sat.orbital_position != orbpos)
remove=false;
}
- else if (orbpos != 0xFFFFFFFF) // do not remove -C or -T transponders when a orbital position is given..
- remove=false;
- if ( remove && chid.dvbnamespace != eNs && chid.dvbnamespace != ch.dvbnamespace )
- remove=false;
+ if ( remove && chid.dvbnamespace != eNs )
+ {
+ if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == 0xFFFF0000)
+ ;
+ else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == 0xEEEE0000)
+ ;
+ else if ( chid.dvbnamespace != ch.dvbnamespace )
+ remove=false;
+ }
if ( remove && chid.original_network_id != eOnid && chid.original_network_id != ch.original_network_id )
remove=false;
if ( remove && chid.transport_stream_id != eTsid && chid.transport_stream_id != ch.transport_stream_id )
if ((unsigned int)sat.orbital_position != orbpos)
remove=false;
}
- if ( remove && chid.dvbnamespace != eNs && chid.dvbnamespace != ch.dvbnamespace )
- remove=false;
+ if ( remove && chid.dvbnamespace != eNs )
+ {
+ if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == 0xFFFF0000)
+ ;
+ else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == 0xEEEE0000)
+ ;
+ else if ( chid.dvbnamespace != ch.dvbnamespace )
+ remove=false;
+ }
if ( remove && chid.original_network_id != eOnid && chid.original_network_id != ch.original_network_id )
remove=false;
if ( remove && chid.transport_stream_id != eTsid && chid.transport_stream_id != ch.transport_stream_id )
{
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;
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;
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;
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() ?