aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dvb/dvbtime.cpp5
-rw-r--r--lib/dvb/dvbtime.h2
-rw-r--r--lib/python/Tools/Makefile.am3
-rw-r--r--lib/python/Tools/RedirectTime.py18
-rw-r--r--lib/python/Tools/__init__.py2
-rw-r--r--lib/python/enigma_python.i1
-rw-r--r--mytest.py2
7 files changed, 29 insertions, 4 deletions
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<iDVBChannel*, channel_data>::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<void> m_timeUpdated;
eDVBLocalTimeHandler();
~eDVBLocalTimeHandler();
#endif
+ PSignal0<void> 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 <lib/base/message.h>
%include <lib/base/console.h>
%include <lib/base/nconfig.h>
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 *