some changes for better support of old dreambox models
[enigma2.git] / lib / dvb / epgcache.h
index af02ead666d714f35cfa90d15ca7573331a582b3..e5dd148be2b6ea3d57962d5995e8dd548b4b16b4 100644 (file)
@@ -152,6 +152,7 @@ class eEPGCache: public eMainloop, private eThread, public Object
        DECLARE_REF(eEPGCache)
        struct channel_data: public Object
        {
+               pthread_mutex_t channel_active;
                channel_data(eEPGCache*);
                eEPGCache *cache;
                eTimer abortTimer, zapTimer;
@@ -171,23 +172,22 @@ class eEPGCache: public eMainloop, private eThread, public Object
                std::set<__u8> seenPrivateSections;
                void readPrivateData(const __u8 *data);
                void startPrivateReader();
-               bool canDelete() { return !isRunning && !m_PrivateConn; }
-#else
-               bool canDelete() { return !isRunning; }
 #endif
 #ifdef ENABLE_MHW_EPG
                std::vector<mhw_channel_name_t> m_channels;
                std::map<__u8, mhw_theme_name_t> m_themes;
                std::map<__u32, mhw_title_t> m_titles;
                std::map<__u32, __u32> m_program_ids;
-               ePtr<eConnection> m_MHWConn;
-               ePtr<iDVBSectionReader> m_MHWReader;
-               eDVBSectionFilterMask m_MHWFilterMask;
+               ePtr<eConnection> m_MHWConn, m_MHWConn2;
+               ePtr<iDVBSectionReader> m_MHWReader, m_MHWReader2;
+               eDVBSectionFilterMask m_MHWFilterMask, m_MHWFilterMask2;
                eTimer m_MHWTimeoutTimer;
                bool m_MHWTimeoutet;
                void MHWTimeout() { m_MHWTimeoutet=true; }
                void readMHWData(const __u8 *data);
+               void readMHWData2(const __u8 *data);
                void startMHWReader(__u16 pid, __u8 tid);
+               void startMHWReader2(__u16 pid, __u8 tid, int ext=-1);
                void startTimeout(int msek);
                bool checkTimeout() { return m_MHWTimeoutet; }
                void cleanup();
@@ -218,10 +218,6 @@ public:
                        flush,
                        startChannel,
                        leaveChannel,
-                       pause,
-                       restart,
-                       updated,
-                       isavail,
                        quit,
                        got_private_pid,
                        timeChanged
@@ -295,17 +291,18 @@ public:
 #ifndef SWIG
        eEPGCache();
        ~eEPGCache();
-#endif
 
-       // called from main thread
-       inline void Lock();
-       inline void Unlock();
 #ifdef ENABLE_PRIVATE_EPG
        void PMTready(eDVBServicePMTHandler *pmthandler);
 #else
        void PMTready(eDVBServicePMTHandler *pmthandler) {}
 #endif
 
+#endif
+       // called from main thread
+       inline void Lock();
+       inline void Unlock();
+
        // at moment just for one service..
        RESULT startTimeQuery(const eServiceReference &service, time_t begin=-1, int minutes=-1);
 
@@ -337,8 +334,8 @@ public:
                CASE_CHECK,
                NO_CASE_CHECK
        };
-       PyObject *lookupEvent(PyObject *list, PyObject *convertFunc=NULL);
-       PyObject *search(PyObject *);
+       PyObject *lookupEvent(SWIG_PYOBJECT(ePyObject) list, SWIG_PYOBJECT(ePyObject) convertFunc=(PyObject*)0);
+       PyObject *search(SWIG_PYOBJECT(ePyObject));
 
        // eServiceEvent are parsed epg events.. it's safe to use them after cache unlock
        // for use from python ( members: m_start_time, m_duration, m_short_description, m_extended_description )