From 2bc720f79ea42168572ba458fec5b2cffb175a04 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Mon, 26 Jun 2006 15:28:24 +0000 Subject: add support for show used tuner for running service in the infobar add support for show all tuners in use in the infobar add support for show the currently date in the infobar now all skins have to define some new widgets in skin.. look in skin.xml and search for "not used in this skin yet" --- lib/dvb/dvb.cpp | 9 +++++++++ lib/dvb/dvb.h | 9 +++++++++ 2 files changed, 18 insertions(+) (limited to 'lib/dvb') diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 09c9f5f6..bad0ce1a 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -78,6 +78,14 @@ eDVBResourceManager::eDVBResourceManager() CONNECT(m_releaseCachedChannelTimer.timeout, eDVBResourceManager::releaseCachedChannel); } +void eDVBResourceManager::feStateChanged() +{ + int mask=0; + for (eSmartPtrList::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i) + if (i->m_inuse) + mask |= ( 1 << i->m_frontend->getID() ); + /* emit */ frontendUseMaskChanged(mask); +} DEFINE_REF(eDVBAdapterLinux); eDVBAdapterLinux::eDVBAdapterLinux(int nr): m_nr(nr) @@ -215,6 +223,7 @@ void eDVBResourceManager::addAdapter(iDVBAdapter *adapter) { frontend->setSEC(m_sec); m_frontend.push_back(new eDVBRegisteredFrontend(frontend, adapter)); + CONNECT(m_frontend.back()->stateChanged, eDVBResourceManager::feStateChanged); } } } diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h index bc51ccd8..4ca986b1 100644 --- a/lib/dvb/dvb.h +++ b/lib/dvb/dvb.h @@ -23,6 +23,7 @@ class eDVBRegisteredFrontend: public iObject, public Object { DECLARE_REF(eDVBRegisteredFrontend); eTimer *disable; + Signal0 stateChanged; void closeFrontend() { if (!m_inuse && m_frontend->closeFrontend()) // frontend busy @@ -38,12 +39,18 @@ public: 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 m_frontend; @@ -175,6 +182,7 @@ class eDVBResourceManager: public iObject, public Object eTimer m_releaseCachedChannelTimer; void DVBChannelStateChanged(iDVBChannel*); void releaseCachedChannel(); + void feStateChanged(); #ifndef SWIG public: #endif @@ -199,6 +207,7 @@ public: #ifdef SWIG public: #endif + PSignal1 frontendUseMaskChanged; RESULT allocateRawChannel(eUsePtr &, int frontend_index); static RESULT getInstance(ePtr &); }; -- cgit v1.2.3