X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/92362f1b73f1e61ad0cb1c581b318b360e0bb6fe..a9efd192b545113282c7c7891a231570f49f27e6:/lib/dvb/dvbtime.cpp diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp index 6cfaccc8..c4335795 100644 --- a/lib/dvb/dvbtime.cpp +++ b/lib/dvb/dvbtime.cpp @@ -18,23 +18,11 @@ void setRTC(time_t time) FILE *f = fopen("/proc/stb/fp/rtc", "w"); if (f) { - time_t wakeup=0; - FILE *f2 = fopen("/proc/stb/fp/wakeup_time", "r"); - if (f2) - { - fscanf(f2, "%u", &wakeup); - fclose(f2); - } - if (wakeup) // atmel firmware okay? - { - if (fprintf(f, "%u", time)) - prev_time = time; - else - eDebug("write /proc/stb/fp/rtc failed (%m)"); - fclose(f); - } + if (fprintf(f, "%u", time)) + prev_time = time; else - eDebug("dont set rtc because of buggy atmel firmware!"); + eDebug("write /proc/stb/fp/rtc failed (%m)"); + fclose(f); } else { @@ -98,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); } @@ -148,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; @@ -181,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"); @@ -408,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; } } } @@ -449,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