git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
long keypress on INFO key either brings up single servie EPG view screen like right...
[enigma2.git]
/
lib
/
dvb
/
epgcache.cpp
diff --git
a/lib/dvb/epgcache.cpp
b/lib/dvb/epgcache.cpp
index 1fc83f686e76a3f32fd84bad4d3f7ee57dbf20ee..0bb6e25b8a34bbde75514f6f5294f45b38af0119 100644
(file)
--- a/
lib/dvb/epgcache.cpp
+++ b/
lib/dvb/epgcache.cpp
@@
-213,13
+213,13
@@
pthread_mutex_t eEPGCache::channel_map_lock=
DEFINE_REF(eEPGCache)
eEPGCache::eEPGCache()
DEFINE_REF(eEPGCache)
eEPGCache::eEPGCache()
- :messages(this,1), cleanTimer(
this
)//, paused(0)
+ :messages(this,1), cleanTimer(
eTimer::create(this)
)//, paused(0)
{
eDebug("[EPGC] Initialized EPGCache");
CONNECT(messages.recv_msg, eEPGCache::gotMessage);
CONNECT(eDVBLocalTimeHandler::getInstance()->m_timeUpdated, eEPGCache::timeUpdated);
{
eDebug("[EPGC] Initialized EPGCache");
CONNECT(messages.recv_msg, eEPGCache::gotMessage);
CONNECT(eDVBLocalTimeHandler::getInstance()->m_timeUpdated, eEPGCache::timeUpdated);
- CONNECT(cleanTimer
.
timeout, eEPGCache::cleanLoop);
+ CONNECT(cleanTimer
->
timeout, eEPGCache::cleanLoop);
ePtr<eDVBResourceManager> res_mgr;
eDVBResourceManager::getInstance(res_mgr);
ePtr<eDVBResourceManager> res_mgr;
eDVBResourceManager::getInstance(res_mgr);
@@
-473,7
+473,7
@@
void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
int duration;
time_t TM = parseDVBtime( eit_event->start_time_1, eit_event->start_time_2, eit_event->start_time_3, eit_event->start_time_4, eit_event->start_time_5);
int duration;
time_t TM = parseDVBtime( eit_event->start_time_1, eit_event->start_time_2, eit_event->start_time_3, eit_event->start_time_4, eit_event->start_time_5);
- time_t now =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ time_t now =
::time(0
);
if ( TM != 3599 && TM > -1)
channel->haveData |= source;
if ( TM != 3599 && TM > -1)
channel->haveData |= source;
@@
-725,7
+725,7
@@
void eEPGCache::cleanLoop()
{
eDebug("[EPGC] start cleanloop");
{
eDebug("[EPGC] start cleanloop");
- time_t now =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ time_t now =
::time(0
);
for (eventCache::iterator DBIt = eventDB.begin(); DBIt != eventDB.end(); DBIt++)
{
for (eventCache::iterator DBIt = eventDB.begin(); DBIt != eventDB.end(); DBIt++)
{
@@
-783,7
+783,7
@@
void eEPGCache::cleanLoop()
eDebug("[EPGC] stop cleanloop");
eDebug("[EPGC] %i bytes for cache used", eventData::CacheSize);
}
eDebug("[EPGC] stop cleanloop");
eDebug("[EPGC] %i bytes for cache used", eventData::CacheSize);
}
- cleanTimer
.
start(CLEAN_INTERVAL,true);
+ cleanTimer
->
start(CLEAN_INTERVAL,true);
}
eEPGCache::~eEPGCache()
}
eEPGCache::~eEPGCache()
@@
-844,10
+844,10
@@
void eEPGCache::gotMessage( const Message &msg )
onid |= 0x80000000; // we use highest bit as private epg indicator
chid.original_network_id = onid;
updateMap::iterator It = channelLastUpdated.find( chid );
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 );
+ int update = ( It != channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (
::time(0
)-It->second) * 1000 ) ) : ZAP_DELAY );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
if (update < ZAP_DELAY)
update = ZAP_DELAY;
- data->startPrivateTimer
.
start(update, 1);
+ data->startPrivateTimer
->
start(update, 1);
if (update >= 60000)
eDebug("[EPGC] next private update in %i min", update/60000);
else if (update >= 1000)
if (update >= 60000)
eDebug("[EPGC] next private update in %i min", update/60000);
else if (update >= 1000)
@@
-1018,7
+1018,7
@@
void eEPGCache::save()
{
unsigned int magic = 0x98765432;
fwrite( &magic, sizeof(int), 1, f);
{
unsigned int magic = 0x98765432;
fwrite( &magic, sizeof(int), 1, f);
- const char *text = "
ENIGMA_EPG
_V7";
+ const char *text = "
UNFINISHED
_V7";
fwrite( text, 13, 1, f );
int size = eventDB.size();
fwrite( &size, sizeof(int), 1, f );
fwrite( text, 13, 1, f );
int size = eventDB.size();
fwrite( &size, sizeof(int), 1, f );
@@
-1065,6
+1065,11
@@
void eEPGCache::save()
}
}
#endif
}
}
#endif
+ // write version string after binary data
+ // has been written to disk.
+ fsync(fileno(f));
+ fseek(f, sizeof(int), SEEK_SET);
+ fwrite("ENIGMA_EPG_V7", 13, 1, f);
fclose(f);
#if 0
unsigned char md5[16];
fclose(f);
#if 0
unsigned char md5[16];
@@
-1083,22
+1088,22
@@
void eEPGCache::save()
eEPGCache::channel_data::channel_data(eEPGCache *ml)
:cache(ml)
eEPGCache::channel_data::channel_data(eEPGCache *ml)
:cache(ml)
- ,abortTimer(
ml), zapTimer(ml
), state(0)
+ ,abortTimer(
eTimer::create(ml)), zapTimer(eTimer::create(ml)
), state(0)
,isRunning(0), haveData(0)
#ifdef ENABLE_PRIVATE_EPG
,isRunning(0), haveData(0)
#ifdef ENABLE_PRIVATE_EPG
- ,startPrivateTimer(
ml
)
+ ,startPrivateTimer(
eTimer::create(ml)
)
#endif
#ifdef ENABLE_MHW_EPG
#endif
#ifdef ENABLE_MHW_EPG
- ,m_MHWTimeoutTimer(
ml
)
+ ,m_MHWTimeoutTimer(
eTimer::create(ml)
)
#endif
{
#ifdef ENABLE_MHW_EPG
#endif
{
#ifdef ENABLE_MHW_EPG
- CONNECT(m_MHWTimeoutTimer
.
timeout, eEPGCache::channel_data::MHWTimeout);
+ CONNECT(m_MHWTimeoutTimer
->
timeout, eEPGCache::channel_data::MHWTimeout);
#endif
#endif
- CONNECT(zapTimer
.
timeout, eEPGCache::channel_data::startEPG);
- CONNECT(abortTimer
.
timeout, eEPGCache::channel_data::abortNonAvail);
+ CONNECT(zapTimer
->
timeout, eEPGCache::channel_data::startEPG);
+ CONNECT(abortTimer
->
timeout, eEPGCache::channel_data::abortNonAvail);
#ifdef ENABLE_PRIVATE_EPG
#ifdef ENABLE_PRIVATE_EPG
- CONNECT(startPrivateTimer
.
timeout, eEPGCache::channel_data::startPrivateReader);
+ CONNECT(startPrivateTimer
->
timeout, eEPGCache::channel_data::startPrivateReader);
#endif
pthread_mutex_init(&channel_active, 0);
}
#endif
pthread_mutex_init(&channel_active, 0);
}
@@
-1107,8
+1112,8
@@
bool eEPGCache::channel_data::finishEPG()
{
if (!isRunning) // epg ready
{
{
if (!isRunning) // epg ready
{
- eDebug("[EPGC] stop caching events(%ld)",
eDVBLocalTimeHandler::getInstance()->nowTime(
));
- zapTimer
.
start(UPDATE_INTERVAL, 1);
+ eDebug("[EPGC] stop caching events(%ld)",
::time(0
));
+ zapTimer
->
start(UPDATE_INTERVAL, 1);
eDebug("[EPGC] next update in %i min", UPDATE_INTERVAL / 60000);
for (int i=0; i < 3; ++i)
{
eDebug("[EPGC] next update in %i min", UPDATE_INTERVAL / 60000);
for (int i=0; i < 3; ++i)
{
@@
-1116,7
+1121,7
@@
bool eEPGCache::channel_data::finishEPG()
calcedSections[i].clear();
}
singleLock l(cache->cache_lock);
calcedSections[i].clear();
}
singleLock l(cache->cache_lock);
- cache->channelLastUpdated[channel->getChannelID()] =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ cache->channelLastUpdated[channel->getChannelID()] =
::time(0
);
#ifdef ENABLE_MHW_EPG
cleanup();
#endif
#ifdef ENABLE_MHW_EPG
cleanup();
#endif
@@
-1127,7
+1132,7
@@
bool eEPGCache::channel_data::finishEPG()
void eEPGCache::channel_data::startEPG()
{
void eEPGCache::channel_data::startEPG()
{
- eDebug("[EPGC] start caching events(%ld)",
eDVBLocalTimeHandler::getInstance()->nowTime(
));
+ eDebug("[EPGC] start caching events(%ld)",
::time(0
));
state=0;
haveData=0;
for (int i=0; i < 3; ++i)
state=0;
haveData=0;
for (int i=0; i < 3; ++i)
@@
-1181,7
+1186,7
@@
void eEPGCache::channel_data::startEPG()
m_ScheduleOtherReader->start(mask);
isRunning |= SCHEDULE_OTHER;
m_ScheduleOtherReader->start(mask);
isRunning |= SCHEDULE_OTHER;
- abortTimer
.
start(7000,true);
+ abortTimer
->
start(7000,true);
}
void eEPGCache::channel_data::abortNonAvail()
}
void eEPGCache::channel_data::abortNonAvail()
@@
-1221,7
+1226,7
@@
void eEPGCache::channel_data::abortNonAvail()
}
#endif
if ( isRunning )
}
#endif
if ( isRunning )
- abortTimer
.
start(90000, true);
+ abortTimer
->
start(90000, true);
else
{
++state;
else
{
++state;
@@
-1240,12
+1245,12
@@
void eEPGCache::channel_data::startChannel()
pthread_mutex_lock(&channel_active);
updateMap::iterator It = cache->channelLastUpdated.find( channel->getChannelID() );
pthread_mutex_lock(&channel_active);
updateMap::iterator It = cache->channelLastUpdated.find( channel->getChannelID() );
- int update = ( It != cache->channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (
eDVBLocalTimeHandler::getInstance()->nowTime(
)-It->second) * 1000 ) ) : ZAP_DELAY );
+ int update = ( It != cache->channelLastUpdated.end() ? ( UPDATE_INTERVAL - ( (
::time(0
)-It->second) * 1000 ) ) : ZAP_DELAY );
if (update < ZAP_DELAY)
update = ZAP_DELAY;
if (update < ZAP_DELAY)
update = ZAP_DELAY;
- zapTimer
.
start(update, 1);
+ zapTimer
->
start(update, 1);
if (update >= 60000)
eDebug("[EPGC] next update in %i min", update/60000);
else if (update >= 1000)
if (update >= 60000)
eDebug("[EPGC] next update in %i min", update/60000);
else if (update >= 1000)
@@
-1259,8
+1264,8
@@
void eEPGCache::channel_data::abortEPG()
seenSections[i].clear();
calcedSections[i].clear();
}
seenSections[i].clear();
calcedSections[i].clear();
}
- abortTimer
.
stop();
- zapTimer
.
stop();
+ abortTimer
->
stop();
+ zapTimer
->
stop();
if (isRunning)
{
eDebug("[EPGC] abort caching events !!");
if (isRunning)
{
eDebug("[EPGC] abort caching events !!");
@@
-1349,7
+1354,7
@@
void eEPGCache::channel_data::readData( const __u8 *data)
break;
default: eDebugNoNewLine("unknown");break;
}
break;
default: eDebugNoNewLine("unknown");break;
}
- eDebug(" finished(%ld)",
eDVBLocalTimeHandler::getInstance()->nowTime(
));
+ eDebug(" finished(%ld)",
::time(0
));
if ( reader )
reader->stop();
isRunning &= ~source;
if ( reader )
reader->stop();
isRunning &= ~source;
@@
-1399,7
+1404,7
@@
RESULT eEPGCache::lookupEventTime(const eServiceReference &service, time_t t, co
if ( It != eventDB.end() && !It->second.first.empty() ) // entrys cached ?
{
if (t==-1)
if ( It != eventDB.end() && !It->second.first.empty() ) // entrys cached ?
{
if (t==-1)
- t =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ t =
::time(0
);
timeMap::iterator i = direction <= 0 ? It->second.second.lower_bound(t) : // find > or equal
It->second.second.upper_bound(t); // just >
if ( i != It->second.second.end() )
timeMap::iterator i = direction <= 0 ? It->second.second.lower_bound(t) : // find > or equal
It->second.second.upper_bound(t); // just >
if ( i != It->second.second.end() )
@@
-1528,7
+1533,7
@@
RESULT eEPGCache::startTimeQuery(const eServiceReference &service, time_t begin,
singleLock s(cache_lock);
const eServiceReferenceDVB &ref = (const eServiceReferenceDVB&)handleGroup(service);
if (begin == -1)
singleLock s(cache_lock);
const eServiceReferenceDVB &ref = (const eServiceReferenceDVB&)handleGroup(service);
if (begin == -1)
- begin =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ begin =
::time(0
);
eventCache::iterator It = eventDB.find(ref);
if ( It != eventDB.end() && It->second.second.size() )
{
eventCache::iterator It = eventDB.find(ref);
if ( It != eventDB.end() && It->second.second.size() )
{
@@
-1773,7
+1778,7
@@
PyObject *eEPGCache::lookupEvent(ePyObject list, ePyObject convertFunc)
}
ePyObject nowTime = strchr(argstring, 'C') ?
}
ePyObject nowTime = strchr(argstring, 'C') ?
- PyLong_FromLong(
eDVBLocalTimeHandler::getInstance()->nowTime(
)) :
+ PyLong_FromLong(
::time(0
)) :
ePyObject();
int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0;
ePyObject();
int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0;
@@
-1829,7
+1834,7
@@
PyObject *eEPGCache::lookupEvent(ePyObject list, ePyObject convertFunc)
}
if (minutes && stime == -1)
}
if (minutes && stime == -1)
- stime =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ stime =
::time(0
);
eServiceReference ref(handleGroup(eServiceReference(PyString_AS_STRING(service))));
if (ref.type != eServiceReference::idDVB)
eServiceReference ref(handleGroup(eServiceReference(PyString_AS_STRING(service))));
if (ref.type != eServiceReference::idDVB)
@@
-2590,7
+2595,7
@@
void eEPGCache::privateSectionRead(const uniqueEPGKey ¤t_service, const __
ASSERT(ptr <= 4098);
for ( std::map< date_time, std::list<uniqueEPGKey> >::iterator it(start_times.begin()); it != start_times.end(); ++it )
{
ASSERT(ptr <= 4098);
for ( std::map< date_time, std::list<uniqueEPGKey> >::iterator it(start_times.begin()); it != start_times.end(); ++it )
{
- time_t now =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ time_t now =
::time(0
);
if ( (it->first.tm + duration_sec) < now )
continue;
memcpy(event+2, it->first.data, 5);
if ( (it->first.tm + duration_sec) < now )
continue;
memcpy(event+2, it->first.data, 5);
@@
-2666,7
+2671,7
@@
void eEPGCache::channel_data::readPrivateData( const __u8 *data)
int tmp = chid.original_network_id.get();
tmp |= 0x80000000; // we use highest bit as private epg indicator
chid.original_network_id = tmp;
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(
);
+ cache->channelLastUpdated[chid] =
::time(0
);
m_PrevVersion = (data[5] & 0x3E) >> 1;
startPrivateReader();
}
m_PrevVersion = (data[5] & 0x3E) >> 1;
startPrivateReader();
}
@@
-2725,7
+2730,7
@@
void eEPGCache::channel_data::timeMHW2DVB( u_char day, u_char hours, u_char minu
// As far as we know all mhw time data is sent in central Europe time zone.
// So, temporarily set timezone to western europe
// As far as we know all mhw time data is sent in central Europe time zone.
// So, temporarily set timezone to western europe
- time_t dt =
eDVBLocalTimeHandler::getInstance()->nowTime(
);
+ time_t dt =
::time(0
);
char *old_tz = getenv( "TZ" );
putenv("TZ=CET-1CEST,M3.5.0/2,M10.5.0/3");
char *old_tz = getenv( "TZ" );
putenv("TZ=CET-1CEST,M3.5.0/2,M10.5.0/3");
@@
-2914,7
+2919,7
@@
void eEPGCache::channel_data::storeTitle(std::map<__u32, mhw_title_t>::iterator
void eEPGCache::channel_data::startTimeout(int msec)
{
void eEPGCache::channel_data::startTimeout(int msec)
{
- m_MHWTimeoutTimer
.
start(msec,true);
+ m_MHWTimeoutTimer
->
start(msec,true);
m_MHWTimeoutet=false;
}
m_MHWTimeoutet=false;
}
@@
-3095,7
+3100,7
@@
void eEPGCache::channel_data::readMHWData(const __u8 *data)
}
}
eDebug("[EPGC] mhw finished(%ld) %d summaries not found",
}
}
eDebug("[EPGC] mhw finished(%ld) %d summaries not found",
-
eDVBLocalTimeHandler::getInstance()->nowTime(
),
+
::time(0
),
m_program_ids.size());
// Summaries have been read, titles that have summaries have been stored.
// Now store titles that do not have summaries.
m_program_ids.size());
// Summaries have been read, titles that have summaries have been stored.
// Now store titles that do not have summaries.
@@
-3400,7
+3405,7
@@
start_summary:
for (std::map<__u32, mhw_title_t>::iterator itTitle(m_titles.begin()); itTitle != m_titles.end(); itTitle++)
storeTitle( itTitle, "", data );
eDebug("[EPGC] mhw2 finished(%ld) %d summaries not found",
for (std::map<__u32, mhw_title_t>::iterator itTitle(m_titles.begin()); itTitle != m_titles.end(); itTitle++)
storeTitle( itTitle, "", data );
eDebug("[EPGC] mhw2 finished(%ld) %d summaries not found",
-
eDVBLocalTimeHandler::getInstance()->nowTime(
),
+
::time(0
),
m_program_ids.size());
}
}
m_program_ids.size());
}
}