X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/81b381e1f5dd38ad1b80a3b3d96060b89a5fab6c..450253e009800d19bef2cade0dc65d33fed7734f:/lib/dvb/dvb.cpp diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 04c2b40e..5315c0e5 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -206,7 +206,7 @@ void eDVBResourceManager::addAdapter(iDVBAdapter *adapter) } } -RESULT eDVBResourceManager::allocateFrontend(ePtr &feparm, ePtr &fe) +RESULT eDVBResourceManager::allocateFrontend(ePtr &fe, ePtr &feparm) { ePtr best; int bestval = 0; @@ -233,6 +233,19 @@ RESULT eDVBResourceManager::allocateFrontend(ePtr &fepar return -1; } +RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr &fe, int nr) +{ + for (eSmartPtrList::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i, --nr) + if ((!nr) && !i->m_inuse) + { + fe = new eDVBAllocatedFrontend(i); + return 0; + } + + fe = 0; + return -1; +} + RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr &demux, int cap) { /* find first unused demux which is on same adapter as frontend (or any, if PVR) @@ -317,15 +330,9 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse ePtr fe; - if (allocateFrontend(feparm, fe)) + if (allocateFrontend(fe, feparm)) return errNoFrontend; -// will be allocated on demand: -// ePtr demux; -// -// if (allocateDemux(*fe, demux)) -// return errNoDemux; - RESULT res; ePtr ch; ch = new eDVBChannel(this, fe); @@ -341,20 +348,13 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse return 0; } -RESULT eDVBResourceManager::allocateRawChannel(eUsePtr &channel) +RESULT eDVBResourceManager::allocateRawChannel(eUsePtr &channel, int frontend_index) { ePtr fe; -#warning FIXME allocateRawChannel - -// if (allocateFrontend(eDVBChannelID(), fe)) + if (allocateFrontendByIndex(fe, frontend_index)) return errNoFrontend; -// ePtr demux; - // -// if (allocateDemux(*fe, demux)) -// return errNoDemux; - eDVBChannel *ch; ch = new eDVBChannel(this, fe); @@ -367,9 +367,6 @@ RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr &channel) { ePtr demux; -// if (allocateDemux(0, demux)) -// return errNoDemux; - eDVBChannel *ch; ch = new eDVBChannel(this, 0);