X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/afbed85c669a78bb89a38e7bbbda55865a7bf885..1a3a68d135903b60ad9aa5ee829cec58d663754a:/lib/dvb_ci/dvbci.cpp diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp index d8b3b0be..85c18794 100644 --- a/lib/dvb_ci/dvbci.cpp +++ b/lib/dvb_ci/dvbci.cpp @@ -45,6 +45,9 @@ eDVBCIInterfaces::eDVBCIInterfaces() ++num_ci; } + for (eSmartPtrList::iterator it(m_slots.begin()); it != m_slots.end(); ++it) + it->setSource(TUNER_A); + if (num_ci > 1) // // FIXME .. we force DM8000 when more than one CI Slot is avail { setInputSource(0, TUNER_A); @@ -202,21 +205,21 @@ void eDVBCIInterfaces::ciRemoved(eDVBCISlot *slot) { if (slot->linked_next) slot->linked_next->setSource(slot->current_source); - else + else // last CI in chain setInputSource(slot->current_tuner, slot->current_source); if (it->cislot == slot) // remove the base slot it->cislot = slot->linked_next; else { + eDVBCISlot *tmp = it->cislot; + while(tmp->linked_next != slot) + tmp = tmp->linked_next; + ASSERT(tmp); if (slot->linked_next) - { - eDVBCISlot *tmp = it->cislot; - while(tmp->linked_next != slot) - tmp = tmp->linked_next; - ASSERT(tmp); tmp->linked_next = slot->linked_next; - } + else + tmp->linked_next = 0; } slot->linked_next=0; } @@ -402,7 +405,7 @@ void eDVBCIInterfaces::recheckPMTHandlers() if (!channel->getFrontend(frontend)) { eDVBFrontend *fe = (eDVBFrontend*) &(*frontend); - tunernum = fe->getID(); + tunernum = fe->getSlotID(); } } ASSERT(tunernum != -1); @@ -508,14 +511,14 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler) it->cislot = slot->linked_next; else { + eDVBCISlot *tmp = it->cislot; + while(tmp->linked_next != slot) + tmp = tmp->linked_next; + ASSERT(tmp); if (slot->linked_next) - { - eDVBCISlot *tmp = it->cislot; - while(tmp->linked_next != slot) - tmp = tmp->linked_next; - ASSERT(tmp); tmp->linked_next = slot->linked_next; - } + else + tmp->linked_next = 0; } slot->linked_next=0; } @@ -901,11 +904,11 @@ eDVBCISlot::eDVBCISlot(eMainloop *context, int nr) { perror(filename); } - setSource(TUNER_A); } eDVBCISlot::~eDVBCISlot() { + delete notifier; } void eDVBCISlot::setAppManager( eDVBCIApplicationManagerSession *session )