{
DECLARE_REF(eDVBRegisteredFrontend);
eTimer *disable;
+ Signal0<void> stateChanged;
void closeFrontend()
{
if (!m_inuse && m_frontend->closeFrontend()) // frontend busy
void dec_use()
{
if (!--m_inuse)
+ {
+ /* emit */ stateChanged();
disable->start(3000, true);
+ }
}
void inc_use()
{
if (++m_inuse == 1)
+ {
m_frontend->openFrontend();
+ /* emit */ stateChanged();
+ }
}
iDVBAdapter *m_adapter;
ePtr<eDVBFrontend> m_frontend;
Signal1<void,eDVBChannel*> m_channelAdded;
- bool canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
+ int canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
eUsePtr<iDVBChannel> m_cached_channel;
Connection m_cached_channel_state_changed_conn;
eTimer m_releaseCachedChannelTimer;
void DVBChannelStateChanged(iDVBChannel*);
void releaseCachedChannel();
+ void feStateChanged();
#ifndef SWIG
public:
#endif
};
RESULT connectChannelAdded(const Slot1<void,eDVBChannel*> &channelAdded, ePtr<eConnection> &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<iDVBChannel> &channel);
#ifdef SWIG
public:
#endif
- RESULT allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index);
- static RESULT getInstance(ePtr<eDVBResourceManager> &ptr) { if (instance) { ptr = instance; return 0; } return -1; }
+ PSignal1<void,int> frontendUseMaskChanged;
+ RESULT allocateRawChannel(eUsePtr<iDVBChannel> &, int frontend_index);
+ static RESULT getInstance(ePtr<eDVBResourceManager> &);
};
-
+TEMPLATE_TYPEDEF(ePtr<eDVBResourceManager>, eDVBResourceManagerPtr);
#ifndef SWIG
/* iDVBPVRChannel includes iDVBChannel. don't panic. */