add new skin stuff
[enigma2.git] / lib / dvb_ci / dvbci.cpp
index 1be4232eef8a59db8c62e27048cecff59e3d4d66..63df265043e85902f2f72829d7ed5f8ee3060068 100644 (file)
@@ -66,6 +66,16 @@ eDVBCISlot *eDVBCIInterfaces::getSlot(int slotid)
        return 0;
 }
 
+int eDVBCIInterfaces::getSlotState(int slotid)
+{
+       eDVBCISlot *slot;
+
+       if( (slot = getSlot(slotid)) == 0 )
+               return eDVBCISlot::stateInvalid;
+
+       return slot->getState();
+}
+
 int eDVBCIInterfaces::reset(int slotid)
 {
        eDVBCISlot *slot;
@@ -359,7 +369,7 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler)
 
                if (slot && !sameServiceExist)
                {
-                       if (slot->getNumOfServices() > 1) // fixme make it dependend of "ci can handle more than one service"
+                       if (slot->getNumOfServices() > 1)
                        {
                                eDebug("[eDVBCIInterfaces] remove last pmt handler for service %s send empty capmt",
                                        service_to_remove.toString().c_str());
@@ -423,8 +433,6 @@ int eDVBCISlot::send(const unsigned char *data, size_t len)
 
 void eDVBCISlot::data(int what)
 {
-       if (state == stateInvalid)
-               return;
        if(what == eSocketNotifier::Priority) {
                if(state != stateRemoved) {
                        state = stateRemoved;
@@ -437,17 +445,18 @@ void eDVBCISlot::data(int what)
                        eDVBCIInterfaces::getInstance()->ciRemoved(this);
                        eDVBCISession::deleteSessions(this);
                        notifier->setRequested(eSocketNotifier::Read);
-                       //HACK
-                       eDVBCI_UI::getInstance()->setState(0,0);
+                       eDVBCI_UI::getInstance()->setState(getSlotID(),0);
                }
                return;
        }
 
+       if (state == stateInvalid)
+               return;
+
        if(state != stateInserted) {
                eDebug("ci inserted");
                state = stateInserted;
-//             HACK
-               eDVBCI_UI::getInstance()->setState(0,1);
+               eDVBCI_UI::getInstance()->setState(getSlotID(),1);
                notifier->setRequested(eSocketNotifier::Read|eSocketNotifier::Priority);
                /* enable PRI to detect removal or errors */
        }