git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove fatal debug message
[enigma2.git]
/
lib
/
dvb
/
dvb.cpp
diff --git
a/lib/dvb/dvb.cpp
b/lib/dvb/dvb.cpp
index 0201b337fb7ee32837931a671d733b5dd1f3040f..deb5042bb75da4e3674fc7124daba85a42fef4aa 100644
(file)
--- a/
lib/dvb/dvb.cpp
+++ b/
lib/dvb/dvb.cpp
@@
-225,19
+225,22
@@
RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
if (i == m_demux.end())
return -1;
if (i == m_demux.end())
return -1;
+ int n=0;
/* FIXME: hardware demux policy */
if (!(cap & iDVBChannel::capDecode))
/* FIXME: hardware demux policy */
if (!(cap & iDVBChannel::capDecode))
- ++i;
+ ++i
, ++n
;
- for (; i != m_demux.end(); ++i)
+ for (; i != m_demux.end(); ++i
, ++n
)
if ((!i->m_inuse) && ((!fe) || (i->m_adapter == fe->m_adapter)))
{
if ((!i->m_inuse) && ((!fe) || (i->m_adapter == fe->m_adapter)))
{
+ if ((cap & iDVBChannel::capDecode) && n)
+ continue;
+
demux = new eDVBAllocatedDemux(i);
if (fe)
demux->get().setSourceFrontend(fe->m_frontend->getID());
else
demux->get().setSourcePVR(0);
demux = new eDVBAllocatedDemux(i);
if (fe)
demux->get().setSourceFrontend(fe->m_frontend->getID());
else
demux->get().setSourcePVR(0);
- eDebug("demux found");
return 0;
}
eDebug("demux not found");
return 0;
}
eDebug("demux not found");
@@
-351,7
+354,7
@@
RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel)
RESULT eDVBResourceManager::addChannel(const eDVBChannelID &chid, eDVBChannel *ch)
{
m_active_channels.push_back(active_channel(chid, ch));
RESULT eDVBResourceManager::addChannel(const eDVBChannelID &chid, eDVBChannel *ch)
{
m_active_channels.push_back(active_channel(chid, ch));
-
/* emit */ m_channelAdded(ch);
+
//
/* emit */ m_channelAdded(ch);
return 0;
}
return 0;
}
@@
-491,7
+494,18
@@
RESULT eDVBChannel::setChannel(const eDVBChannelID &channelid)
m_channel_id = channelid;
m_mgr->addChannel(channelid, this);
m_state = state_tuning;
m_channel_id = channelid;
m_mgr->addChannel(channelid, this);
m_state = state_tuning;
- return m_frontend->get().tune(*feparm);
+ /* if tuning fails, shutdown the channel immediately. */
+ int res;
+ res = m_frontend->get().tune(*feparm);
+
+ if (res)
+ {
+ m_state = state_release;
+ m_stateChanged(this);
+ return res;
+ }
+
+ return 0;
}
RESULT eDVBChannel::connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)
}
RESULT eDVBChannel::connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)
@@
-513,6
+527,7
@@
RESULT eDVBChannel::setCIRouting(const eDVBCIRouting &routing)
RESULT eDVBChannel::getDemux(ePtr<iDVBDemux> &demux, int cap)
{
RESULT eDVBChannel::getDemux(ePtr<iDVBDemux> &demux, int cap)
{
+ eDebug("get %d demux", cap);
ePtr<eDVBAllocatedDemux> &our_demux = (cap & capDecode) ? m_decoder_demux : m_demux;
if (!our_demux)
ePtr<eDVBAllocatedDemux> &our_demux = (cap & capDecode) ? m_decoder_demux : m_demux;
if (!our_demux)
@@
-520,10
+535,15
@@
RESULT eDVBChannel::getDemux(ePtr<iDVBDemux> &demux, int cap)
demux = 0;
if (m_mgr->allocateDemux(m_frontend ? (eDVBRegisteredFrontend*)*m_frontend : (eDVBRegisteredFrontend*)0, our_demux, cap))
demux = 0;
if (m_mgr->allocateDemux(m_frontend ? (eDVBRegisteredFrontend*)*m_frontend : (eDVBRegisteredFrontend*)0, our_demux, cap))
- return 0;
+ return -1;
+
}
demux = *our_demux;
}
demux = *our_demux;
+ if (cap & capDecode)
+ {
+ our_demux = 0;
+ }
return 0;
}
return 0;
}