diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-29 22:11:03 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-29 22:11:03 +0000 |
| commit | 0ee9e6abfea296a1edced778f5c3ccd9d3f1e67b (patch) | |
| tree | 61b2fc829278abb01c59cb3f66d9f9edb993606b /lib/service/servicedvb.cpp | |
| parent | ce9a39dcd70a49c1348b0ffaac61e01d4f9555e2 (diff) | |
| download | enigma2-0ee9e6abfea296a1edced778f5c3ccd9d3f1e67b.tar.gz enigma2-0ee9e6abfea296a1edced778f5c3ccd9d3f1e67b.zip | |
some changes for new service groups
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 4b7d63a0..56a18e48 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -106,17 +106,6 @@ int eStaticServiceDVBInformation::isPlayable(const eServiceReference &ref, const return false; } - -class eStaticServiceDVBBouquetInformation: public iStaticServiceInformation -{ - DECLARE_REF(eStaticServiceDVBBouquetInformation); -public: - eServiceReference m_playable_service; - RESULT getName(const eServiceReference &ref, std::string &name); - int getLength(const eServiceReference &ref); - int isPlayable(const eServiceReference &ref, const eServiceReference &ignore); -}; - DEFINE_REF(eStaticServiceDVBBouquetInformation); RESULT eStaticServiceDVBBouquetInformation::getName(const eServiceReference &ref, std::string &name) @@ -162,34 +151,40 @@ int eStaticServiceDVBBouquetInformation::isPlayable(const eServiceReference &ref if (eDVBResourceManager::getInstance(res)) { eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. no resource manager!"); - return false; + return 0; } if (res->getChannelList(db)) { eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. no channel list!"); - return false; + return 0; } eBouquet *bouquet=0; if (db->getBouquet(ref, bouquet)) { eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. getBouquet failed!"); - return false; + return 0; } + int cur=0; eDVBChannelID chid, chid_ignore; ((const eServiceReferenceDVB&)ignore).getChannelID(chid_ignore); for (std::list<eServiceReference>::iterator it(bouquet->m_services.begin()); it != bouquet->m_services.end(); ++it) { - m_playable_service = *it; + int tmp=res->canAllocateChannel(chid, chid_ignore); ((const eServiceReferenceDVB&)*it).getChannelID(chid); - if (res->canAllocateChannel(chid, chid_ignore)) - return true; + if (tmp > cur) + { + m_playable_service = *it; + cur = tmp; + } } + if (cur) + return cur; } m_playable_service = eServiceReference(); - return false; + return 0; } int eStaticServiceDVBBouquetInformation::getLength(const eServiceReference &ref) |
