diff options
Diffstat (limited to 'lib/dvb/dvb.cpp')
| -rw-r--r-- | lib/dvb/dvb.cpp | 37 |
1 files changed, 17 insertions, 20 deletions
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<iDVBFrontendParameters> &feparm, ePtr<eDVBAllocatedFrontend> &fe) +RESULT eDVBResourceManager::allocateFrontend(ePtr<eDVBAllocatedFrontend> &fe, ePtr<iDVBFrontendParameters> &feparm) { ePtr<eDVBRegisteredFrontend> best; int bestval = 0; @@ -233,6 +233,19 @@ RESULT eDVBResourceManager::allocateFrontend(ePtr<iDVBFrontendParameters> &fepar return -1; } +RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr<eDVBAllocatedFrontend> &fe, int nr) +{ + for (eSmartPtrList<eDVBRegisteredFrontend>::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<eDVBAllocatedDemux> &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<eDVBAllocatedFrontend> fe; - if (allocateFrontend(feparm, fe)) + if (allocateFrontend(fe, feparm)) return errNoFrontend; -// will be allocated on demand: -// ePtr<eDVBAllocatedDemux> demux; -// -// if (allocateDemux(*fe, demux)) -// return errNoDemux; - RESULT res; ePtr<eDVBChannel> ch; ch = new eDVBChannel(this, fe); @@ -341,20 +348,13 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse return 0; } -RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel) +RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index) { ePtr<eDVBAllocatedFrontend> fe; -#warning FIXME allocateRawChannel - -// if (allocateFrontend(eDVBChannelID(), fe)) + if (allocateFrontendByIndex(fe, frontend_index)) return errNoFrontend; -// ePtr<eDVBAllocatedDemux> demux; - // -// if (allocateDemux(*fe, demux)) -// return errNoDemux; - eDVBChannel *ch; ch = new eDVBChannel(this, fe); @@ -367,9 +367,6 @@ RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel) { ePtr<eDVBAllocatedDemux> demux; -// if (allocateDemux(0, demux)) -// return errNoDemux; - eDVBChannel *ch; ch = new eDVBChannel(this, 0); |
