diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-11-12 18:42:54 +0000 |
| commit | 99e6feec1546d5fa2ff8e5cdfdf84438db4281b3 (patch) | |
| tree | 3d52309c89f8345fcc8e77d0b0a0117cc7dac00c /lib/dvb/dvb.cpp | |
| parent | 233d539468f8a5b89782e9e92be224fcd7c21ab6 (diff) | |
| download | enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.tar.gz enigma2-99e6feec1546d5fa2ff8e5cdfdf84438db4281b3.zip | |
add possibility to set tuner priority for alternative services in Customize
menu (just with expert usage level)
Diffstat (limited to 'lib/dvb/dvb.cpp')
| -rw-r--r-- | lib/dvb/dvb.cpp | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 03c2aab6..b7d278cc 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -597,14 +597,41 @@ int eDVBResourceManager::canAllocateFrontend(ePtr<iDVBFrontendParameters> &fepar return bestval; } +int tuner_type_channel_default(ePtr<iDVBChannelList> &channellist, const eDVBChannelID &chid) +{ + if (channellist) + { + ePtr<iDVBFrontendParameters> feparm; + if (!channellist->getChannelFrontendData(chid, feparm)) + { + int system; + if (!feparm->getSystem(system)) + { + switch(system) + { + case iDVBFrontend::feSatellite: + return 50000; + case iDVBFrontend::feCable: + return 40000; + case iDVBFrontend::feTerrestrial: + return 30000; + default: + break; + } + } + } + } + return 0; +} + int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID& ignore) { - int ret=30000; + int ret=0; if (m_cached_channel) { eDVBChannel *cache_chan = (eDVBChannel*)&(*m_cached_channel); if(channelid==cache_chan->getChannelID()) - return ret; + return tuner_type_channel_default(m_list, channelid); } /* first, check if a channel is already existing. */ @@ -615,7 +642,7 @@ int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, cons if (i->m_channel_id == channelid) { // eDebug("found shared channel.."); - return ret; + return tuner_type_channel_default(m_list, channelid); } } @@ -685,14 +712,12 @@ int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, cons if (!m_list) { eDebug("no channel list set!"); - ret = 0; goto error; } if (m_list->getChannelFrontendData(channelid, feparm)) { eDebug("channel not found!"); - ret = 0; goto error; } |
