git.cweiske.de
/
enigma2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7a79e14
)
use refcount for decoding demuxes to check if they are in use
author
Felix Domke
<tmbinc@elitedvb.net>
Thu, 13 Apr 2006 00:52:31 +0000
(
00:52
+0000)
committer
Felix Domke
<tmbinc@elitedvb.net>
Thu, 13 Apr 2006 00:52:31 +0000
(
00:52
+0000)
lib/dvb/dvb.cpp
patch
|
blob
|
history
diff --git
a/lib/dvb/dvb.cpp
b/lib/dvb/dvb.cpp
index 18765ad3fb3cbce18b5d0fc8e916e5d7034fcba6..2a188ee1d81d7811899737eb3f400e1b26689778 100644
(file)
--- a/
lib/dvb/dvb.cpp
+++ b/
lib/dvb/dvb.cpp
@@
-282,9
+282,14
@@
RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
}
for (; i != m_demux.end(); ++i, ++n)
}
for (; i != m_demux.end(); ++i, ++n)
- if ((!i->m_inuse) && ((!fe) || (i->m_adapter == fe->m_adapter)))
+ {
+ int is_decode = n < 2;
+
+ int in_use = is_decode ? (i->m_demux->getRefCount() != 2) : i->m_inuse;
+
+ if ((!in_use) && ((!fe) || (i->m_adapter == fe->m_adapter)))
{
{
- if ((cap & iDVBChannel::capDecode) &&
(n >= 2)
)
+ if ((cap & iDVBChannel::capDecode) &&
!is_decode
)
continue;
demux = new eDVBAllocatedDemux(i);
continue;
demux = new eDVBAllocatedDemux(i);
@@
-294,6
+299,7
@@
RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
demux->get().setSourcePVR(0);
return 0;
}
demux->get().setSourcePVR(0);
return 0;
}
+ }
eDebug("demux not found");
return -1;
}
eDebug("demux not found");
return -1;
}