git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix typo
[enigma2.git]
/
lib
/
dvb
/
dvb.cpp
diff --git
a/lib/dvb/dvb.cpp
b/lib/dvb/dvb.cpp
index 6f72cb1703b1dce919a26cd559384b158c43d212..23a9d5a9c268518e810519ff975023f7183e8eb0 100644
(file)
--- a/
lib/dvb/dvb.cpp
+++ b/
lib/dvb/dvb.cpp
@@
-242,8
+242,8
@@
void eDVBResourceManager::addAdapter(iDVBAdapter *adapter)
{
if (prev_dvbt_frontend)
{
{
if (prev_dvbt_frontend)
{
- prev_dvbt_frontend->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (
int
)new_fe);
- frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (
int
)&(*prev_dvbt_frontend));
+ prev_dvbt_frontend->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (
long
)new_fe);
+ frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (
long
)&(*prev_dvbt_frontend));
}
prev_dvbt_frontend = new_fe;
}
}
prev_dvbt_frontend = new_fe;
}
@@
-320,10
+320,11
@@
RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr<eDVBAllocatedFrontend>
if (!i->m_inuse && i->m_frontend->getSlotID() == slot_index)
{
// check if another slot linked to this is in use
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 (
(int)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!");
if (satpos_depends_to_fe->m_inuse)
{
eDebug("another satpos depending frontend is in use.. so allocateFrontendByIndex not possible!");
@@
-333,29
+334,29
@@
RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr<eDVBAllocatedFrontend>
}
else // check linked tuners
{
}
else // check linked tuners
{
- eDVBRegisteredFrontend *next =
- (eDVBRegisteredFrontend *) i->m_frontend->m_data[eDVBFrontend::LINKED_NEXT_PTR];
- while ( (int)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;
}
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 ( (int)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;
}
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);
}
}
fe = new eDVBAllocatedFrontend(i);
@@
-748,6
+749,15
@@
error:
return ret;
}
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:
class eDVBChannelFilePush: public eFilePushThread
{
public:
@@
-1014,6
+1024,9
@@
void eDVBChannel::pvrEvent(int event)
void eDVBChannel::cueSheetEvent(int event)
{
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:
switch (event)
{
case eCueSheet::evtSeek:
@@
-1051,7
+1064,6
@@
void eDVBChannel::cueSheetEvent(int event)
m_skipmode_n = m_skipmode_m = 0;
}
}
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 */
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 */