retune on lostlock is now working :)
[enigma2.git] / lib / dvb / dvb.cpp
index 6a0211ec54f3701e38d56b85f2e42a7ac6d123e2..32e19308fb561f4a230b5dfe8603aaec986eacb3 100644 (file)
@@ -591,8 +591,9 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe)
                ourstate = state_tuning;
        } else if (state == iDVBFrontend::stateLostLock)
        {
-               eDebug("OURSTATE: lost lock");
-               ourstate = state_unavailable;
+               eDebug("OURSTATE: lost lock.. retune");
+               ourstate = state_tuning;
+               m_frontend->get().tune(*m_feparm);
        } else if (state == iDVBFrontend::stateFailed)
        {
                eDebug("OURSTATE: failed");
@@ -652,6 +653,7 @@ RESULT eDVBChannel::setChannel(const eDVBChannelID &channelid, ePtr<iDVBFrontend
                        /* if tuning fails, shutdown the channel immediately. */
        int res;
        res = m_frontend->get().tune(*feparm);
+       m_feparm = feparm;
        
        if (res)
        {
@@ -749,6 +751,7 @@ RESULT eDVBChannel::playFile(const char *file)
        m_stateChanged(this);
        
        m_pvr_thread = new eFilePushThread();
+       m_pvr_thread->enablePVRCommit(1);
        m_pvr_thread->start(m_pvr_fd_src, m_pvr_fd_dst);
        CONNECT(m_pvr_thread->m_event, eDVBChannel::pvrEvent);