X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/75b6f719972578d2bc553db3f30fa8a86c440df7..7211bd40026fb8b00be038a59abcbfa29569b3ed:/lib/dvb/epgcache.h diff --git a/lib/dvb/epgcache.h b/lib/dvb/epgcache.h index dfd19482..90aff6c6 100644 --- a/lib/dvb/epgcache.h +++ b/lib/dvb/epgcache.h @@ -6,10 +6,23 @@ #ifndef SWIG +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +#define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +#define __GNUC_PREREQ(maj, min) 0 +#endif + #include #include +#if 0 && __GNUC_PREREQ(4,3) +#include +#include +#else #include #include +#endif #include @@ -92,7 +105,14 @@ struct hash_uniqueEPGKey }; #define tidMap std::set<__u32> -#if defined(__GNUC__) && ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ == 4 ) // check if gcc version >= 3.1 +#if 0 && __GNUC_PREREQ(4,3) + #define eventCache std::unordered_map, hash_uniqueEPGKey, uniqueEPGKey::equal> + #ifdef ENABLE_PRIVATE_EPG + #define contentTimeMap std::unordered_map > + #define contentMap std::unordered_map + #define contentMaps std::unordered_map + #endif +#elif __GNUC_PREREQ(3,1) #define eventCache __gnu_cxx::hash_map, hash_uniqueEPGKey, uniqueEPGKey::equal> #ifdef ENABLE_PRIVATE_EPG #define contentTimeMap __gnu_cxx::hash_map > @@ -157,7 +177,8 @@ class eEPGCache: public eMainloop, private eThread, public Object eEPGCache *cache; ePtr abortTimer, zapTimer; int prevChannelState; - __u8 state, isRunning, haveData; + int state; + __u8 isRunning, haveData; ePtr channel; ePtr m_stateChangedConn, m_NowNextConn, m_ScheduleConn, m_ScheduleOtherConn, m_ViasatConn; ePtr m_NowNextReader, m_ScheduleReader, m_ScheduleOtherReader, m_ViasatReader; @@ -182,6 +203,7 @@ class eEPGCache: public eMainloop, private eThread, public Object ePtr m_MHWReader, m_MHWReader2; eDVBSectionFilterMask m_MHWFilterMask, m_MHWFilterMask2; ePtr m_MHWTimeoutTimer; + __u16 m_mhw2_channel_pid, m_mhw2_title_pid, m_mhw2_summary_pid; bool m_MHWTimeoutet; void MHWTimeout() { m_MHWTimeoutet=true; } void readMHWData(const __u8 *data); @@ -222,6 +244,9 @@ public: leaveChannel, quit, got_private_pid, + got_mhw2_channel_pid, + got_mhw2_title_pid, + got_mhw2_summary_pid, timeChanged }; int type; @@ -266,6 +291,8 @@ private: void thread(); // thread function // called from epgcache thread + int m_running; + char m_filename[1024]; void save(); void load(); #ifdef ENABLE_PRIVATE_EPG @@ -301,6 +328,9 @@ public: #endif #endif + // must be called once! + void setCacheFile(const char *filename); + // called from main thread inline void Lock(); inline void Unlock();