diff --git a/src/zapit/include/zapit/femanager.h b/src/zapit/include/zapit/femanager.h index 67a347536..d1e22e37b 100644 --- a/src/zapit/include/zapit/femanager.h +++ b/src/zapit/include/zapit/femanager.h @@ -77,6 +77,7 @@ class CFEManager private: fe_map_t femap; fe_mode_t mode; + int enabled_count; CConfigFile configfile; common_fe_config_t config; bool config_exist; @@ -117,6 +118,7 @@ class CFEManager void setMode(fe_mode_t newmode, bool initial = false); int getFrontendCount() { return femap.size(); }; + int getEnabledCount(); CFrontend * getScanFrontend(t_satellite_position satellitePosition); bool canTune(CZapitChannel * channel); diff --git a/src/zapit/src/femanager.cpp b/src/zapit/src/femanager.cpp index 71d7ca05f..a09cec1ba 100644 --- a/src/zapit/src/femanager.cpp +++ b/src/zapit/src/femanager.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -80,6 +81,7 @@ CFEManager::CFEManager() : configfile(',', true) mode = FE_MODE_SINGLE; config_exist = false; have_locked = false; + enabled_count = 0; } bool CFEManager::Init() @@ -105,7 +107,7 @@ bool CFEManager::Init() dmap.push_back(CFeDmx(i)); INFO("found %d frontends, %d demuxes\n", (int)femap.size(), (int)dmap.size()); - if( femap.empty() ) + if (femap.empty()) return false; return true; @@ -363,6 +365,7 @@ void CFEManager::linkFrontends(bool init) { INFO("linking.."); OpenThreads::ScopedLock m_lock(mutex); + enabled_count = 0; for(fe_map_iterator_t it = femap.begin(); it != femap.end(); it++) { CFrontend * fe = it->second; #if 0 @@ -414,6 +417,8 @@ void CFEManager::linkFrontends(bool init) } if (init && femode != CFrontend::FE_MODE_UNUSED) fe->Init(); + if (femode != CFrontend::FE_MODE_UNUSED) + enabled_count++; } } @@ -631,7 +636,16 @@ CFrontend * CFEManager::allocateFE(CZapitChannel * channel, bool forrecord) } #else channel->setRecordDemux(frontend->fenumber+1); + channel->setPipDemux(frontend->fenumber+1); cDemux::SetSource(frontend->fenumber+1, frontend->fenumber); +#ifdef ENABLE_PIP + /* FIXME until proper demux management */ + if (enabled_count < 4) { + channel->setPipDemux(PIP_DEMUX); + cDemux::SetSource(PIP_DEMUX, frontend->fenumber); + } + INFO("pip demux: %d", channel->getPipDemux()); +#endif #endif } @@ -756,3 +770,9 @@ bool CFEManager::haveCable() } return false; } + +int CFEManager::getEnabledCount() +{ + OpenThreads::ScopedLock m_lock(mutex); + return enabled_count; +}