diff options
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qtimerinfo_unix.cpp | 20 | ||||
-rw-r--r-- | src/corelib/kernel/qtimerinfo_unix_p.h | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/src/corelib/kernel/qtimerinfo_unix.cpp b/src/corelib/kernel/qtimerinfo_unix.cpp index 8a0c6c5ac2..568f789700 100644 --- a/src/corelib/kernel/qtimerinfo_unix.cpp +++ b/src/corelib/kernel/qtimerinfo_unix.cpp @@ -185,6 +185,19 @@ void QTimerInfoList::timerRepair(const timeval &diff) } } +inline timeval &operator+=(timeval &t1, int ms) +{ + t1.tv_sec += ms / 1000; + t1.tv_usec += ms % 1000 * 1000; + return normalizedTimeval(t1); +} + +inline timeval operator+(const timeval &t1, int ms) +{ + timeval t2 = t1; + return t2 += ms; +} + static timeval roundToMillisecond(timeval val) { // always round up @@ -232,9 +245,8 @@ void QTimerInfoList::registerTimer(int timerId, int interval, Qt::TimerType time { QTimerInfo *t = new QTimerInfo; t->id = timerId; + t->interval = interval; t->timerType = timerType; - t->interval.tv_sec = interval / 1000; - t->interval.tv_usec = (interval % 1000) * 1000; t->timeout = updateCurrentTime() + t->interval; t->obj = object; t->activateRef = 0; @@ -299,7 +311,7 @@ QList<QAbstractEventDispatcher::TimerInfo> QTimerInfoList::registeredTimers(QObj for (int i = 0; i < count(); ++i) { register const QTimerInfo * const t = at(i); if (t->obj == object) - list << QAbstractEventDispatcher::TimerInfo(t->id, t->interval.tv_sec * 1000 + t->interval.tv_usec / 1000, t->timerType); + list << QAbstractEventDispatcher::TimerInfo(t->id, t->interval, t->timerType); } return list; } @@ -355,7 +367,7 @@ int QTimerInfoList::activateTimers() // reinsert timer timerInsert(currentTimerInfo); - if (currentTimerInfo->interval.tv_usec > 0 || currentTimerInfo->interval.tv_sec > 0) + if (currentTimerInfo->interval > 0) n_act++; if (!currentTimerInfo->activateRef) { diff --git a/src/corelib/kernel/qtimerinfo_unix_p.h b/src/corelib/kernel/qtimerinfo_unix_p.h index 82acb439e7..b551f472df 100644 --- a/src/corelib/kernel/qtimerinfo_unix_p.h +++ b/src/corelib/kernel/qtimerinfo_unix_p.h @@ -62,8 +62,8 @@ QT_BEGIN_NAMESPACE // internal timer info struct QTimerInfo { int id; // - timer identifier + int interval; // - timer interval in milliseconds Qt::TimerType timerType; // - timer type - timeval interval; // - timer interval timeval timeout; // - when to sent event QObject *obj; // - object to receive event QTimerInfo **activateRef; // - ref from activateTimers |