summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2021-01-28 10:54:42 +0100
committerAndreas Buhr <andreas.buhr@qt.io>2021-01-28 18:50:37 +0100
commita7ca8b1a2864e47cacd530f6b10d2b415c5193f7 (patch)
tree1495737d4af66f97c980127c329cfa9720009e0d /src/corelib/kernel
parent1a2dd9276759742a7eda704341ee618d296ad8bf (diff)
Safer setting of interval in QTimer
There are two methods which set the interval and do things afterwards. Setting the interval might trigger other code. This patch uses setValueBypassingBindings and marks the interval dirty later, just to be safe. Change-Id: I2cae3e4a9f040007dfd246c424250034e8df10a0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qtimer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index b553bbd5d3..8148ced222 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -257,8 +257,9 @@ void QTimer::start()
void QTimer::start(int msec)
{
Q_D(QTimer);
- d->inter = msec;
+ d->inter.setValueBypassingBindings(msec);
start();
+ d->inter.markDirty();
}
@@ -752,13 +753,14 @@ QBindable<bool> QTimer::bindableSingleShot()
void QTimer::setInterval(int msec)
{
Q_D(QTimer);
- d->inter = msec;
+ d->inter.setValueBypassingBindings(msec);
if (d->id != INV_TIMER) { // create new timer
QObject::killTimer(d->id); // restart timer
d->id = QObject::startTimer(msec, d->type);
// No need to call markDirty() for d->isActiveData here,
// as timer state actually does not change
}
+ d->inter.markDirty();
}
int QTimer::interval() const