summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2011-12-21 11:33:56 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-02 10:44:00 +0100
commit6fc9820d2a3f349f04a2ea9c39261de0168d2331 (patch)
treecd07d4f662aee0af771481301a54ab5ea7068b15 /src
parent2bbf9befd8879dcfca9f48ac9ac13daf40f48847 (diff)
Change QTimerInfo (UNIX) to keep the interval in milliseconds.
The API passes the interval as an int, there's no reason to convert it to a timeval struct. This also prepares for changing the UNIX timer code to support the different timer types. Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: Ie3cc1ae8f1be6a9ad3f1766051642cbf3e614418 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qtimerinfo_unix.cpp20
-rw-r--r--src/corelib/kernel/qtimerinfo_unix_p.h2
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