From 5cdabb1038ec3f628001f26f5d587eb95ca6465d Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Fri, 18 Nov 2005 03:35:17 +0000 Subject: scan: add allocateFrontendByIndex, so ServiceScan uses a fixed frontend ID - currently hardcoded 0 in python. --- lib/dvb/dvb.cpp | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) (limited to '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); -- cgit v1.2.3