X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/fd9ebe13e2e86c7fb3a80769e419538e1cfe9142..d34456e1eb1869b92e221e9b18be04efff3a804c:/lib/dvb/dvb.cpp 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 &fepar return bestval; } +int tuner_type_channel_default(ePtr &channellist, const eDVBChannelID &chid) +{ + if (channellist) + { + ePtr 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; }