From: Andreas Monzner Date: Mon, 15 Jan 2007 20:19:14 +0000 (+0000) Subject: use timedifference from eDVBLocalTimeHandler for time() calls in python X-Git-Tag: 2.6.0~2444 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/60a9bcb6f7b0e928a836dccd1008b82f837a0461 use timedifference from eDVBLocalTimeHandler for time() calls in python --- diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp index 6c2df6c2..7684bfa4 100644 --- a/lib/dvb/dvbtime.cpp +++ b/lib/dvb/dvbtime.cpp @@ -148,6 +148,11 @@ 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"); + setRTC(nowTime()); + } } void eDVBLocalTimeHandler::readTimeOffsetData( const char* filename ) diff --git a/lib/dvb/dvbtime.h b/lib/dvb/dvbtime.h index 2b07a250..a5114f82 100644 --- a/lib/dvb/dvbtime.h +++ b/lib/dvb/dvbtime.h @@ -73,10 +73,10 @@ class eDVBLocalTimeHandler: public Object #endif public: #ifndef SWIG - PSignal0 m_timeUpdated; eDVBLocalTimeHandler(); ~eDVBLocalTimeHandler(); #endif + PSignal0 m_timeUpdated; time_t nowTime() const { return m_time_ready ? ::time(0)+m_time_difference : -1; } bool ready() const { return m_time_ready; } int difference() const { return m_time_difference; } diff --git a/lib/python/Tools/Makefile.am b/lib/python/Tools/Makefile.am index 4828e1fb..77142a7a 100644 --- a/lib/python/Tools/Makefile.am +++ b/lib/python/Tools/Makefile.am @@ -3,5 +3,6 @@ installdir = $(LIBDIR)/enigma2/python/Tools install_DATA = \ FuzzyDate.py XMLTools.py Directories.py NumericalTextInput.py \ KeyBindings.py BoundFunction.py ISO639.py Notifications.py __init__.py \ - RedirectOutput.py DreamboxHardware.py Import.py Event.py CList.py + RedirectOutput.py DreamboxHardware.py Import.py Event.py CList.py \ + RedirectTime.py diff --git a/lib/python/Tools/RedirectTime.py b/lib/python/Tools/RedirectTime.py new file mode 100644 index 00000000..91c80022 --- /dev/null +++ b/lib/python/Tools/RedirectTime.py @@ -0,0 +1,18 @@ +import time +from enigma import eDVBLocalTimeHandler + +org_time = time.time +time_difference = eDVBLocalTimeHandler.getInstance().difference() + +def myTime(): + global time_difference + t = org_time() + t += time_difference + return t + +def timeChangedCallback(): + global time_difference + time_difference = eDVBLocalTimeHandler.getInstance().difference() + +eDVBLocalTimeHandler.getInstance().m_timeUpdated.get().append(timeChangedCallback) +time.time = myTime \ No newline at end of file diff --git a/lib/python/Tools/__init__.py b/lib/python/Tools/__init__.py index a79bb103..df8d8873 100644 --- a/lib/python/Tools/__init__.py +++ b/lib/python/Tools/__init__.py @@ -1,2 +1,2 @@ -all = ["FuzzyDate.py", "XMLTools.py", "Directories.py", "KeyBindings.py", "BoundFunction.py", "ISO639.py", "Notifications", +all = ["RedirectTime.py", "FuzzyDate.py", "XMLTools.py", "Directories.py", "KeyBindings.py", "BoundFunction.py", "ISO639.py", "Notifications", "RedirectOutput.py", "DreamboxHardware.py"] diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 8ee7fb39..13eca6b4 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -153,6 +153,7 @@ typedef long time_t; %immutable eDVBResourceManager::frontendUseMaskChanged; %immutable eAVSwitch::vcr_sb_notifier; %immutable ePythonMessagePump::recv_msg; +%immutable eDVBLocalTimeHandler::m_timeUpdated; %include %include %include diff --git a/mytest.py b/mytest.py index 0eab8a65..58c5c680 100644 --- a/mytest.py +++ b/mytest.py @@ -1,4 +1,4 @@ -from Tools import RedirectOutput +from Tools import RedirectOutput, RedirectTime from enigma import runMainloop, eDVBDB, eTimer, quitMainloop, eDVBVolumecontrol, \ getDesktop, ePythonConfigQuery, eAVSwitch, eWindow, eServiceEvent from tools import *