X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/2bc720f79ea42168572ba458fec5b2cffb175a04..d87e3beb37390b59d288ae1cb43d9f887754ed56:/lib/dvb/dvb.h diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h index 4ca986b1..c71a4d1b 100644 --- a/lib/dvb/dvb.h +++ b/lib/dvb/dvb.h @@ -33,9 +33,12 @@ public: eDVBRegisteredFrontend(eDVBFrontend *fe, iDVBAdapter *adap) :disable(new eTimer(eApp)), m_adapter(adap), m_frontend(fe), m_inuse(0) { - disable = new eTimer(eApp); CONNECT(disable->timeout, eDVBRegisteredFrontend::closeFrontend); } + ~eDVBRegisteredFrontend() + { + delete disable; + } void dec_use() { if (!--m_inuse) @@ -125,9 +128,9 @@ private: eSmartPtrList m_frontend; eSmartPtrList m_demux; }; - #endif // SWIG +SWIG_IGNORE(eDVBResourceManager); class eDVBResourceManager: public iObject, public Object { DECLARE_REF(eDVBResourceManager); @@ -149,7 +152,7 @@ class eDVBResourceManager: public iObject, public Object combinations. this will be evaluated here. */ RESULT allocateFrontend(ePtr &fe, ePtr &feparm); - RESULT allocateFrontendByIndex(ePtr &fe, int index); + RESULT allocateFrontendByIndex(ePtr &fe, int slot_index); /* allocate a demux able to filter on the selected frontend. */ RESULT allocateDemux(eDVBRegisteredFrontend *fe, ePtr &demux, int cap); @@ -175,17 +178,17 @@ class eDVBResourceManager: public iObject, public Object Signal1 m_channelAdded; - bool canAllocateFrontend(ePtr &feparm); + int canAllocateFrontend(ePtr &feparm); eUsePtr m_cached_channel; Connection m_cached_channel_state_changed_conn; eTimer m_releaseCachedChannelTimer; void DVBChannelStateChanged(iDVBChannel*); - void releaseCachedChannel(); void feStateChanged(); #ifndef SWIG public: #endif + void releaseCachedChannel(); eDVBResourceManager(); virtual ~eDVBResourceManager(); @@ -193,27 +196,42 @@ public: RESULT getChannelList(ePtr &list); enum { - errNoFrontend = -1, + /* errNoFrontend = -1 replaced by more spcific messages */ errNoDemux = -2, - errChidNotFound = -3 + errChidNotFound = -3, + errNoChannelList = -4, + errChannelNotInList = -5, + errAllSourcesBusy = -6, + errNoSourceFound = -7, }; - + RESULT connectChannelAdded(const Slot1 &channelAdded, ePtr &connection); - bool canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore); + int canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore); /* allocate channel... */ RESULT allocateChannel(const eDVBChannelID &channelid, eUsePtr &channel); RESULT allocatePVRChannel(eUsePtr &channel); + static RESULT getInstance(ePtr &); #ifdef SWIG public: #endif PSignal1 frontendUseMaskChanged; - RESULT allocateRawChannel(eUsePtr &, int frontend_index); - static RESULT getInstance(ePtr &); + SWIG_VOID(RESULT) allocateRawChannel(eUsePtr &SWIG_OUTPUT, int slot_index); + PyObject *setFrontendSlotInformations(SWIG_PYOBJECT(ePyObject) list); }; -TEMPLATE_TYPEDEF(ePtr, eDVBResourceManagerPtr); +SWIG_TEMPLATE_TYPEDEF(ePtr, eDVBResourceManager); +SWIG_EXTEND(ePtr, + static ePtr getInstance() + { + extern ePtr NewResourceManagerPtr(void); + return NewResourceManagerPtr(); + } +); + #ifndef SWIG +class eDVBChannelFilePush; + /* iDVBPVRChannel includes iDVBChannel. don't panic. */ class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object { @@ -265,7 +283,7 @@ private: ePtr m_conn_frontendStateChanged; /* for PVR playback */ - eFilePushThread *m_pvr_thread; + eDVBChannelFilePush *m_pvr_thread; void pvrEvent(int event); int m_pvr_fd_dst; @@ -289,6 +307,6 @@ private: void AddUse(); void ReleaseUse(); }; - #endif // SWIG + #endif