X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/185319be599e9f42cd695da14c01499fc79f68d5..23cc33141cdf93dad750965ee559849aa99410a3:/lib/dvb/db.cpp diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index e8500b23..65b37862 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -670,17 +670,26 @@ eDVBDB::~eDVBDB() instance=NULL; } -RESULT eDVBDB::removeService(eServiceReferenceDVB service) +RESULT eDVBDB::removeService(const eServiceReference &ref) { - std::map >::iterator it(m_services.find(service)); - if (it != m_services.end()) + if (ref.type == eServiceReference::idDVB) { - m_services.erase(it); - return 0; + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map >::iterator it(m_services.find(service)); + if (it != m_services.end()) + { + m_services.erase(it); + return 0; + } } return -1; } +RESULT eDVBDB::removeServices(int dvb_namespace, int tsid, int onid, unsigned int orb_pos) +{ + return removeServices(eDVBChannelID(eDVBNamespace(dvb_namespace), eTransportStreamID(tsid), eOriginalNetworkID(onid)), orb_pos); +} + RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) { RESULT ret=-1; @@ -710,6 +719,10 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) remove=false; if ( remove ) { + eDebug("remove %08x %04x %04x", + ch.dvbnamespace.get(), + ch.original_network_id.get(), + ch.transport_stream_id.get()); removed_chids.insert(it->first); m_channels.erase(it++); } @@ -734,22 +747,35 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos) return ret; } -RESULT eDVBDB::addFlag(eServiceReferenceDVB service, unsigned int flagmask) +RESULT eDVBDB::addFlag(const eServiceReference &ref, unsigned int flagmask) { - std::map >::iterator it(m_services.find(service)); - if (it != m_services.end()) + if (ref.type == eServiceReference::idDVB) { - it->second->m_flags |= ~flagmask; + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map >::iterator it(m_services.find(service)); + if (it != m_services.end()) + it->second->m_flags |= ~flagmask; + return 0; } - return 0; + return -1; } -RESULT eDVBDB::removeFlag(eServiceReferenceDVB service, unsigned int flagmask) +RESULT eDVBDB::removeFlag(const eServiceReference &ref, unsigned int flagmask) { - std::map >::iterator it(m_services.find(service)); - if (it != m_services.end()) - it->second->m_flags &= ~flagmask; - return 0; + if (ref.type == eServiceReference::idDVB) + { + eServiceReferenceDVB &service = (eServiceReferenceDVB&)ref; + std::map >::iterator it(m_services.find(service)); + if (it != m_services.end()) + it->second->m_flags &= ~flagmask; + return 0; + } + return -1; +} + +RESULT eDVBDB::removeFlags(unsigned int flagmask, int dvb_namespace, int tsid, int onid, unsigned int orb_pos) +{ + return removeFlags(flagmask, eDVBChannelID(eDVBNamespace(dvb_namespace), eTransportStreamID(tsid), eOriginalNetworkID(onid)), orb_pos); } RESULT eDVBDB::removeFlags(unsigned int flagmask, eDVBChannelID chid, unsigned int orbpos) @@ -798,7 +824,6 @@ RESULT eDVBDB::removeFlags(unsigned int flagmask, eDVBChannelID chid, unsigned i return 0; } - RESULT eDVBDB::addChannelToList(const eDVBChannelID &id, iDVBFrontendParameters *feparm) { channel ch; @@ -830,12 +855,7 @@ RESULT eDVBDB::addService(const eServiceReferenceDVB &serviceref, eDVBService *s { std::map >::iterator it(m_services.find(serviceref)); if (it == m_services.end()) - { - service->m_flags |= eDVBService::dxNewFound; m_services.insert(std::pair >(serviceref, service)); - } - else - it->second->m_flags &= ~eDVBService::dxNewFound; return 0; }