++num_ci;
}
+ for (eSmartPtrList<eDVBCISlot>::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);
{
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;
}
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;
}
// eDebug("use_count is now %d", slot->use_count);
slot = next;
}
+ // check if another service is waiting for the CI
+ recheckPMTHandlers();
}
- // check if another service is waiting for the CI
- recheckPMTHandlers();
}
void eDVBCIInterfaces::gotPMT(eDVBServicePMTHandler *pmthandler)
if (fd >= 0)
{
- notifier = new eSocketNotifier(context, fd, eSocketNotifier::Read | eSocketNotifier::Priority | eSocketNotifier::Write);
+ notifier = eSocketNotifier::create(context, fd, eSocketNotifier::Read | eSocketNotifier::Priority | eSocketNotifier::Write);
CONNECT(notifier->activated, eDVBCISlot::data);
} else
{
perror(filename);
}
- setSource(TUNER_A);
}
eDVBCISlot::~eDVBCISlot()