zapit/src/femanager.cpp: bugfix, getFrontend return value for the same transponder

Origin commit data
------------------
Commit: 702beba7d8
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2013-02-13 (Wed, 13 Feb 2013)
This commit is contained in:
[CST] Focus
2013-02-13 12:41:03 +04:00
parent 70041b42fe
commit fb0edfaed2

View File

@@ -86,6 +86,7 @@ bool CFEManager::Init()
CFrontend * fe; CFrontend * fe;
unsigned short fekey; unsigned short fekey;
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
for(int i = 0; i < MAX_ADAPTERS; i++) { for(int i = 0; i < MAX_ADAPTERS; i++) {
for(int j = 0; j < MAX_FE; j++) { for(int j = 0; j < MAX_FE; j++) {
fe = new CFrontend(j, i); fe = new CFrontend(j, i);
@@ -488,7 +489,7 @@ bool CFEManager::loopCanTune(CFrontend * fe, CZapitChannel * channel)
CFrontend * CFEManager::getFrontend(CZapitChannel * channel) CFrontend * CFEManager::getFrontend(CZapitChannel * channel)
{ {
CFrontend * free_frontend = NULL; CFrontend * free_frontend = NULL;
CFrontend * same_tid_fe = NULL; //CFrontend * same_tid_fe = NULL;
if (livefe && livefe->tuned && livefe->sameTsidOnid(channel->getTransponderId())) if (livefe && livefe->tuned && livefe->sameTsidOnid(channel->getTransponderId()))
return livefe; return livefe;
@@ -533,7 +534,7 @@ CFrontend * CFEManager::getFrontend(CZapitChannel * channel)
} }
if (fe->tuned && fe->sameTsidOnid(channel->getTransponderId())) { if (fe->tuned && fe->sameTsidOnid(channel->getTransponderId())) {
FEDEBUG("fe %d on the same TP", fe->fenumber); FEDEBUG("fe %d on the same TP", fe->fenumber);
return same_tid_fe; return fe;
} }
if (!loop_busy && fe->getMode() != CFrontend::FE_MODE_LINK_TWIN) { if (!loop_busy && fe->getMode() != CFrontend::FE_MODE_LINK_TWIN) {
if (have_loop && !loopCanTune(fe, channel)) { if (have_loop && !loopCanTune(fe, channel)) {
@@ -559,15 +560,14 @@ CFrontend * CFEManager::getFrontend(CZapitChannel * channel)
if(mfe->Locked()) { if(mfe->Locked()) {
if(mfe->tuned && mfe->sameTsidOnid(channel->getTransponderId())) { if(mfe->tuned && mfe->sameTsidOnid(channel->getTransponderId())) {
FEDEBUG("fe %d on the same TP", mfe->fenumber); FEDEBUG("fe %d on the same TP", mfe->fenumber);
return same_tid_fe; return mfe;
} }
} else if(!free_frontend) } else if(!free_frontend)
free_frontend = mfe; free_frontend = mfe;
} }
} }
CFrontend * ret = same_tid_fe ? same_tid_fe : free_frontend; FEDEBUG("Selected fe: %d", free_frontend ? free_frontend->fenumber : -1);
FEDEBUG("Selected fe: %d", ret ? ret->fenumber : -1); return free_frontend;
return ret;
} }
int CFEManager::getDemux(transponder_id_t id) int CFEManager::getDemux(transponder_id_t id)