remove non working python refcount debugging code
[enigma2.git] / lib / dvb / epgcache.cpp
index 46785de16864e45a03316d746c5353dd99de71a2..e8394c405baa1c83c4c042d965f0cfff3700a756 100644 (file)
@@ -766,7 +766,10 @@ void eEPGCache::gotMessage( const Message &msg )
                                        data->m_PrevVersion = -1;
                                        data->m_PrivatePid = msg.pid;
                                        data->m_PrivateService = msg.service;
-                                       updateMap::iterator It = channelLastUpdated.find( channel->getChannelID() );
+                                       int onid = chid.original_network_id.get();
+                                       onid |= 0x80000000;  // we use highest bit as private epg indicator
+                                       chid.original_network_id = onid;
+                                       updateMap::iterator It = channelLastUpdated.find( chid );
                                        int update = ( It != channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (eDVBLocalTimeHandler::getInstance()->nowTime()-It->second) * 1000 ) ) : ZAP_DELAY );
                                        if (update < ZAP_DELAY)
                                                update = ZAP_DELAY;
@@ -1572,7 +1575,7 @@ void fillTuple(PyObject *tuple, char *argstring, int argcount, PyObject *service
        }
 }
 
-PyObject *handleEvent(ePtr<eServiceEvent> &ptr, PyObject *dest_list, char* argstring, int argcount, PyObject *service, PyObject *nowTime, PyObject *service_name, PyObject *convertFunc, PyObject *convertFuncArgs)
+int handleEvent(ePtr<eServiceEvent> &ptr, PyObject *dest_list, char* argstring, int argcount, PyObject *service, PyObject *nowTime, PyObject *service_name, PyObject *convertFunc, PyObject *convertFuncArgs)
 {
        if (convertFunc)
        {
@@ -1586,7 +1589,10 @@ PyObject *handleEvent(ePtr<eServiceEvent> &ptr, PyObject *dest_list, char* argst
                                Py_DECREF(nowTime);
                        Py_DECREF(convertFuncArgs);
                        Py_DECREF(dest_list);
-                       return result;
+                       PyErr_SetString(PyExc_StandardError,
+                               "error in convertFunc execute");
+                       eDebug("error in convertFunc execute");
+                       return -1;
                }
                PyList_Append(dest_list, result);
                Py_DECREF(result);
@@ -1778,9 +1784,11 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc)
                                        ePtr<eServiceEvent> ptr;
                                        while (!getNextTimeEntry(ptr))
                                        {
-                                               PyObject *ret = handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs);
-                                               if (ret)
-                                                       return ret;
+                                               if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+                                               {
+                                                       Unlock();
+                                                       return 0;  // error
+                                               }
                                        }
                                }
                                Unlock();
@@ -1795,9 +1803,8 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc)
                                        else
                                                lookupEventTime(ref, stime, ptr, type);
                                }
-                               PyObject *ret = handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs);
-                               if (ret)
-                                       return ret;
+                               if (handleEvent(ptr, dest_list, argstring, argcount, service, nowTime, service_name, convertFunc, convertFuncArgs))
+                                       return 0; // error
                        }
                        if (service_changed)
                                Py_DECREF(service);
@@ -2123,7 +2130,8 @@ PyObject *eEPGCache::search(PyObject *arg)
                        // check all events
                        for (timeMap::iterator evit(evmap.begin()); evit != evmap.end() && maxcount; ++evit)
                        {
-                               if (evit->second->getEventID() == eventid)
+                               int evid = evit->second->getEventID();
+                               if ( evid == eventid)
                                        continue;
                                __u8 *data = evit->second->EITdata;
                                int tmp = evit->second->ByteSize-12;
@@ -2152,7 +2160,7 @@ PyObject *eEPGCache::search(PyObject *arg)
                                                ePtr<eServiceEvent> ptr;
                                                if (needServiceEvent)
                                                {
-                                                       lookupEventId(ref, evit->first, ptr);
+                                                       lookupEventId(ref, evid, ptr);
                                                        if (!ptr)
                                                                eDebug("event not found !!!!!!!!!!!");
                                                }
@@ -2374,6 +2382,7 @@ void eEPGCache::privateSectionRead(const uniqueEPGKey &current_service, const __
                        {
                                switch( (tsid << 16) | sid )
                                {
+                                       case 0x01030b: sid = 0x1b; tsid = 4; break;  // Premiere Win
                                        case 0x0300f0: sid = 0xe0; tsid = 2; break;
                                        case 0x0300f1: sid = 0xe1; tsid = 2; break;
                                        case 0x0300f5: sid = 0xdc; break;
@@ -2495,6 +2504,11 @@ void eEPGCache::channel_data::readPrivateData( const __u8 *data)
        if ( seenPrivateSections.size() == (unsigned int)(data[7] + 1) )
        {
                eDebug("[EPGC] private finished");
+               eDVBChannelID chid = channel->getChannelID();
+               int tmp = chid.original_network_id.get();
+               tmp |= 0x80000000; // we use highest bit as private epg indicator
+               chid.original_network_id = tmp;
+               cache->channelLastUpdated[chid] = eDVBLocalTimeHandler::getInstance()->nowTime();
                m_PrevVersion = (data[5] & 0x3E) >> 1;
                startPrivateReader();
        }
@@ -3213,7 +3227,7 @@ start_summary:
                }
        }
 abort:
-       isRunning &= ~eEPGCache::MHW;
+       isRunning &= ~MHW;
        m_MHWConn2=0;
        if ( m_MHWReader2 )
                m_MHWReader2->stop();