diff options
author | Andreas Buhr <andreas.buhr@qt.io> | 2021-01-28 10:54:42 +0100 |
---|---|---|
committer | Andreas Buhr <andreas.buhr@qt.io> | 2021-01-28 18:50:37 +0100 |
commit | a7ca8b1a2864e47cacd530f6b10d2b415c5193f7 (patch) | |
tree | 1495737d4af66f97c980127c329cfa9720009e0d /src/corelib/kernel | |
parent | 1a2dd9276759742a7eda704341ee618d296ad8bf (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.cpp | 6 |
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 |