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)
{
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;