aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/dvb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dvb/dvb.cpp')
-rw-r--r--lib/dvb/dvb.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp
index 364787ac..8c89a16f 100644
--- a/lib/dvb/dvb.cpp
+++ b/lib/dvb/dvb.cpp
@@ -304,7 +304,8 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse
if(channelid==cache_chan->getChannelID())
{
eDebug("use cached_channel");
- channel=m_cached_channel;
+ channel = m_cached_channel;
+ m_cached_channel->recheckFrontendState();
return 0;
}
m_cached_channel=0;
@@ -591,16 +592,16 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe)
ourstate = state_tuning;
} else if (state == iDVBFrontend::stateLostLock)
{
+ /* on managed channels, we try to retune in order to re-acquire lock. */
if (m_feparm)
{
- eDebug("OURSTATE: lost lock.. retune");
+ eDebug("OURSTATE: lost lock, trying to retune");
ourstate = state_tuning;
m_frontend->get().tune(*m_feparm);
- }
- else // this case happens in scan.. in scan setChannel is not used .. so m_feparm is NULL
- // but its okay.. in scan we dont like to retune
+ } else
+ /* on unmanaged channels, we don't do this. the client will do this. */
{
- eDebug("OURSTATE: lost lock.. but no feparm avail.. set state_unavailable");
+ eDebug("OURSTATE: lost lock, unavailable now.")
ourstate = state_unavailable;
}
} else if (state == iDVBFrontend::stateFailed)