if (!i->m_inuse && i->m_frontend->getSlotID() == slot_index)
{
// check if another slot linked to this is in use
- eDVBRegisteredFrontend *satpos_depends_to_fe =
- (eDVBRegisteredFrontend*) i->m_frontend->m_data[eDVBFrontend::SATPOS_DEPENDS_PTR];
- if ( (long)satpos_depends_to_fe != -1 )
+ long tmp;
+ i->m_frontend->getData(eDVBFrontend::SATPOS_DEPENDS_PTR, tmp);
+ if ( tmp != -1 )
{
+ eDVBRegisteredFrontend *satpos_depends_to_fe = (eDVBRegisteredFrontend *)tmp;
if (satpos_depends_to_fe->m_inuse)
{
eDebug("another satpos depending frontend is in use.. so allocateFrontendByIndex not possible!");
}
else // check linked tuners
{
- eDVBRegisteredFrontend *next =
- (eDVBRegisteredFrontend *) i->m_frontend->m_data[eDVBFrontend::LINKED_NEXT_PTR];
- while ( (long)next != -1 )
+ i->m_frontend->getData(eDVBFrontend::LINKED_NEXT_PTR, tmp);
+ while ( tmp != -1 )
{
+ eDVBRegisteredFrontend *next = (eDVBRegisteredFrontend *) tmp;
if (next->m_inuse)
{
eDebug("another linked frontend is in use.. so allocateFrontendByIndex not possible!");
err = errAllSourcesBusy;
goto alloc_fe_by_id_not_possible;
}
- next = (eDVBRegisteredFrontend *)next->m_frontend->m_data[eDVBFrontend::LINKED_NEXT_PTR];
+ next->m_frontend->getData(eDVBFrontend::LINKED_NEXT_PTR, tmp);
}
- eDVBRegisteredFrontend *prev = (eDVBRegisteredFrontend *)
- i->m_frontend->m_data[eDVBFrontend::LINKED_PREV_PTR];
- while ( (long)prev != -1 )
+ i->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp);
+ while ( tmp != -1 )
{
+ eDVBRegisteredFrontend *prev = (eDVBRegisteredFrontend *) tmp;
if (prev->m_inuse)
{
eDebug("another linked frontend is in use.. so allocateFrontendByIndex not possible!");
err = errAllSourcesBusy;
goto alloc_fe_by_id_not_possible;
}
- prev = (eDVBRegisteredFrontend *)prev->m_frontend->m_data[eDVBFrontend::LINKED_PREV_PTR];
+ prev->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp);
}
}
fe = new eDVBAllocatedFrontend(i);
return ret;
}
+bool eDVBResourceManager::canMeasureFrontendInputPower()
+{
+ for (eSmartPtrList<eDVBRegisteredFrontend>::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i)
+ {
+ return i->m_frontend->readInputpower() >= 0;
+ }
+ return false;
+}
+
class eDVBChannelFilePush: public eFilePushThread
{
public:
void eDVBChannel::cueSheetEvent(int event)
{
+ /* we might end up here if playing failed or stopped, but the client hasn't (yet) noted. */
+ if (!m_pvr_thread)
+ return;
switch (event)
{
case eCueSheet::evtSeek:
m_skipmode_n = m_skipmode_m = 0;
}
}
- ASSERT(m_pvr_thread);
m_pvr_thread->setIFrameSearch(m_skipmode_n != 0);
if (m_cue->m_skipmode_ratio != 0)
m_pvr_thread->setTimebaseChange(0x10000 * 9000 / (m_cue->m_skipmode_ratio / 10)); /* negative values are also ok */