X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6696994da0d59a3b483eda65d1dc8b1a9df67cc0..4e6bb28e14b621f0e818db84150522549dc7b6d4:/lib/dvb/frontend.cpp diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 8bfe4858..bfbd9b57 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -1276,14 +1276,15 @@ void eDVBFrontend::getTransponderData(ePyObject dest, bool original) case feTerrestrial: { FRONTENDPARAMETERS front; - if (!original) + if (m_fd == -1 && !original) + original = true; + else if (ioctl(m_fd, FE_GET_FRONTEND, &front)<0) { - if (!m_simulate && m_fd != -1 && ioctl(m_fd, FE_GET_FRONTEND, &front)<0) - eDebug("FE_GET_FRONTEND (%m)"); + eDebug("FE_GET_FRONTEND failed (%m)"); + original = true; } - else { - const FRONTENDPARAMETERS &parm = original ? this->parm : front; + const FRONTENDPARAMETERS &parm = original || m_simulate ? this->parm : front; const char *tmp = "INVERSION_AUTO"; switch(parm_inversion) { @@ -1417,11 +1418,13 @@ void eDVBFrontend::tuneLoop() // called by m_tuneTimer tmp = prev->m_frontend->m_data[LINKED_PREV_PTR]; if (tmp == -1 && sec_fe != this && !prev->m_inuse) { int state = sec_fe->m_state; + // workaround to put the kernel frontend thread into idle state! if (state != eDVBFrontend::stateIdle && state != stateClosed) { sec_fe->closeFrontend(true); state = sec_fe->m_state; } + // sec_fe is closed... we must reopen it here.. if (state == eDVBFrontend::stateClosed) { regFE = prev;