aboutsummaryrefslogtreecommitdiff
path: root/lib/base/ebase.h
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-03-20 15:32:35 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-03-20 15:32:35 +0000
commit5518d56f51a8951cc7cea96ee1782ba470380ddc (patch)
treee1e9359757357a4ec1270fc14e4039d92de7a880 /lib/base/ebase.h
parente7b3db898270e6a6a252eee7697302fb0c1f7d38 (diff)
downloadenigma2-5518d56f51a8951cc7cea96ee1782ba470380ddc.tar.gz
enigma2-5518d56f51a8951cc7cea96ee1782ba470380ddc.zip
cleanup / apply timeoffsets to twisted timer too
Diffstat (limited to 'lib/base/ebase.h')
-rw-r--r--lib/base/ebase.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/base/ebase.h b/lib/base/ebase.h
index 8e6ea711..f14d07ac 100644
--- a/lib/base/ebase.h
+++ b/lib/base/ebase.h
@@ -123,10 +123,15 @@ static inline timeval operator-=( timeval &t1, const long msek )
return t1;
}
-static inline int timeval_to_usec(const timeval &t1)
+static inline long timeout_usec ( const timeval & orig )
{
- return t1.tv_sec*1000000 + t1.tv_usec;
+ timeval now;
+ gettimeofday(&now,0);
+ if ( (orig-now).tv_sec > 2000 )
+ return 2000*1000*1000;
+ return (orig-now).tv_sec*1000000 + (orig-now).tv_usec;
}
+
#endif
class eMainloop;
@@ -185,16 +190,21 @@ class eMainloop
int loop_level;
int processOneEvent(unsigned int user_timeout, PyObject **res=0, ePyObject additional=ePyObject());
int retval;
+ int time_offset;
pthread_mutex_t recalcLock;
- int m_now_is_invalid;
int m_interrupt_requested;
- void addSocketNotifier(eSocketNotifier *sn);
+ timeval m_twisted_timer; // twisted timer
+
+ void addSocketNotifier(eSocketNotifier *sn);
void removeSocketNotifier(eSocketNotifier *sn);
void addTimer(eTimer* e);
void removeTimer(eTimer* e);
+ void applyTimeOffset();
public:
static void addTimeOffset(int offset);
+ void addInstanceTimeOffset(int offset);
+ int getTimeOffset() { return time_offset; }
#ifndef SWIG
static ePtrList<eMainloop> existing_loops;
@@ -203,7 +213,6 @@ public:
eMainloop()
:app_quit_now(0),loop_level(0),retval(0), m_interrupt_requested(0)
{
- m_now_is_invalid = 0;
existing_loops.push_back(this);
pthread_mutex_init(&recalcLock, 0);
}