just retune on "managed" dvbchannels .. not in scan
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 19 Jan 2006 12:49:06 +0000 (12:49 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 19 Jan 2006 12:49:06 +0000 (12:49 +0000)
lib/dvb/dvb.cpp

index 32e19308fb561f4a230b5dfe8603aaec986eacb3..364787ac8f9a4f860fae8e03e6bce13f74769add 100644 (file)
@@ -591,9 +591,18 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe)
                ourstate = state_tuning;
        } else if (state == iDVBFrontend::stateLostLock)
        {
                ourstate = state_tuning;
        } else if (state == iDVBFrontend::stateLostLock)
        {
-               eDebug("OURSTATE: lost lock.. retune");
-               ourstate = state_tuning;
-               m_frontend->get().tune(*m_feparm);
+               if (m_feparm)
+               {
+                       eDebug("OURSTATE: lost lock.. 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
+               {
+                       eDebug("OURSTATE: lost lock.. but no feparm avail.. set state_unavailable");
+                       ourstate = state_unavailable;
+               }
        } else if (state == iDVBFrontend::stateFailed)
        {
                eDebug("OURSTATE: failed");
        } else if (state == iDVBFrontend::stateFailed)
        {
                eDebug("OURSTATE: failed");