X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d59ce3f9c60c4466006ad1e148cec9a6e3a29cb2..80a43808a277db246fd679ab7e84b5b932bacfd7:/lib/dvb/dvb.cpp?ds=sidebyside diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 32e19308..dcdac7ef 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -304,7 +304,7 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse if(channelid==cache_chan->getChannelID()) { eDebug("use cached_channel"); - channel=m_cached_channel; + channel = m_cached_channel; return 0; } m_cached_channel=0; @@ -591,9 +591,18 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe) ourstate = state_tuning; } else if (state == iDVBFrontend::stateLostLock) { - eDebug("OURSTATE: lost lock.. retune"); - ourstate = state_tuning; - m_frontend->get().tune(*m_feparm); + /* on managed channels, we try to retune in order to re-acquire lock. */ + if (m_feparm) + { + eDebug("OURSTATE: lost lock, trying to retune"); + ourstate = state_tuning; + m_frontend->get().tune(*m_feparm); + } else + /* on unmanaged channels, we don't do this. the client will do this. */ + { + eDebug("OURSTATE: lost lock, unavailable now.") + ourstate = state_unavailable; + } } else if (state == iDVBFrontend::stateFailed) { eDebug("OURSTATE: failed");