int eDVBFrontend::closeFrontend()
{
- eDVBRegisteredFrontend *linked_fe = (eDVBRegisteredFrontend*)m_data[LINKED_NEXT_PTR];
- while (linked_fe != (eDVBRegisteredFrontend*)-1)
+ long tmp = m_data[LINKED_NEXT_PTR];
+ while (tmp != -1)
{
+ eDVBRegisteredFrontend *linked_fe = (eDVBRegisteredFrontend*)tmp;
if (linked_fe->m_inuse)
{
eDebug("dont close frontend %d until the linked frontend %d in slot %d is still in use",
m_dvbid, linked_fe->m_frontend->getDVBID(), linked_fe->m_frontend->getSlotID());
return -1;
}
- linked_fe->m_frontend->getData(LINKED_NEXT_PTR, (long&)linked_fe);
+ linked_fe->m_frontend->getData(LINKED_NEXT_PTR, tmp);
}
if (m_fd >= 0)
{
eDVBFrontend::~eDVBFrontend()
{
+ m_data[LINKED_PREV_PTR] = m_data[LINKED_NEXT_PTR] = -1;
closeFrontend();
delete m_timeout;
delete m_tuneTimer;
if (f) // new interface exist?
{
bool slimiting = m_sec_sequence.current()->mode == eSecCommand::modeStatic;
- if (fprintf(f, "%s", slimiting ? "on" : "off") != 1)
+ if (fprintf(f, "%s", slimiting ? "on" : "off") <= 0)
eDebug("write %s failed!! (%m)", proc_name);
else
eDebug("[SEC] set %s current limiting", slimiting ? "static" : "dynamic");
int type;
if (feparm->getSystem(type) || type != m_type || !m_enabled)
return 0;
-
if (m_type == eDVBFrontend::feSatellite)
{
ASSERT(m_sec);
ret = m_sec->canTune(sat_parm, this, 1 << m_slotid);
if (ret > 1 && sat_parm.system == eDVBFrontendParametersSatellite::System::DVB_S && m_can_handle_dvbs2)
ret -= 1;
+ return ret;
}
else if (m_type == eDVBFrontend::feCable)
return 2; // more prio for cable frontends
- return 1;
+ else if (m_type == eDVBFrontend::feTerrestrial)
+ return 1;
+ return 0;
}
bool eDVBFrontend::setSlotInfo(ePyObject obj)