aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvb.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-29 22:11:03 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-29 22:11:03 +0000
commit0ee9e6abfea296a1edced778f5c3ccd9d3f1e67b (patch)
tree61b2fc829278abb01c59cb3f66d9f9edb993606b /lib/service/servicedvb.cpp
parentce9a39dcd70a49c1348b0ffaac61e01d4f9555e2 (diff)
downloadenigma2-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.cpp31
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)