X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e52de875e255153a9d15656d459fc784614fe4a6..37b38cb05fc6bc4993f852a78bdba93c7627cf5b:/lib/dvb/dvbtime.cpp?ds=sidebyside diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp index 42b12e85..c4335795 100644 --- a/lib/dvb/dvbtime.cpp +++ b/lib/dvb/dvbtime.cpp @@ -86,10 +86,10 @@ time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5) } TDT::TDT(eDVBChannel *chan, int update_count) - :chan(chan), update_count(update_count) + :chan(chan), m_interval_timer(eTimer::create()), update_count(update_count) { CONNECT(tableReady, TDT::ready); - CONNECT(m_interval_timer.timeout, TDT::start); + CONNECT(m_interval_timer->timeout, TDT::start); if (chan) chan->getDemux(demux, 0); } @@ -136,7 +136,7 @@ void TDT::start() void TDT::startTimer( int interval ) { - m_interval_timer.start(interval, true); + m_interval_timer->start(interval, true); } eDVBLocalTimeHandler *eDVBLocalTimeHandler::instance; @@ -169,8 +169,6 @@ eDVBLocalTimeHandler::eDVBLocalTimeHandler() eDVBLocalTimeHandler::~eDVBLocalTimeHandler() { instance=0; - for (std::map::iterator it=m_knownChannels.begin(); it != m_knownChannels.end(); ++it) - delete it->second.tdt; if (ready()) { eDebug("set RTC to previous valid time"); @@ -396,10 +394,10 @@ void eDVBLocalTimeHandler::updateTime( time_t tp_time, eDVBChannel *chan, int up m_knownChannels.find(chan); if ( it != m_knownChannels.end() ) { - TDT *prev_tdt = it->second.tdt; - it->second.tdt = new TDT(chan, prev_tdt->getUpdateCount()); + int updateCount = it->second.tdt->getUpdateCount(); + it->second.tdt = 0; + it->second.tdt = new TDT(chan, updateCount); it->second.tdt->startTimer(60*60*1000); // restart TDT for this transponder in 60min - delete prev_tdt; } } } @@ -437,7 +435,6 @@ void eDVBLocalTimeHandler::DVBChannelStateChanged(iDVBChannel *chan) break; case iDVBChannel::state_release: eDebug("[eDVBLocalTimerHandler] remove channel %p", chan); - delete it->second.tdt; m_knownChannels.erase(it); break; default: // ignore all other events