QBasicTimer: replace new qint64 overloads with chrono ones

Found in API review.

As per "chrono first" initiative[1], implement the int overload via the
chrono one, not vice versa

[1] https://lists.qt-project.org/pipermail/development/2023-January/043563.html

Pick-to: 6.5
Change-Id: I65fe7039ad8ae5f9eb21d9c59a46b9c5c152fac3
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2023-03-01 08:23:55 +01:00
parent 38664dabed
commit 5573e2d6ac
3 changed files with 41 additions and 29 deletions

View File

@ -270,17 +270,7 @@ QT_WARNING_POP
#if QT_CORE_REMOVED_SINCE(6, 5)
#include "qbasictimer.h"
void QBasicTimer::start(int msec, QObject *obj)
{
start(qint64(msec), obj);
}
void QBasicTimer::start(int msec, Qt::TimerType timerType, QObject *obj)
{
start(qint64(msec), timerType, obj);
}
#include "qbasictimer.h" // inlined API
#include "qbuffer.h" // inline removed API

View File

@ -102,42 +102,50 @@ QT_BEGIN_NAMESPACE
*/
/*!
\fn void QBasicTimer::start(qint64 msec, QObject *object)
\fn void QBasicTimer::start(int msec, QObject *object)
Starts (or restarts) the timer with a \a msec milliseconds timeout. The
\obsolete Use chrono overload instead.
*/
/*!
\since 6.5
Starts (or restarts) the timer with a \a duration timeout. The
timer will be a Qt::CoarseTimer. See Qt::TimerType for information on the
different timer types.
The given \a object will receive timer events.
\note In Qt versions prior to 6.5, \a msec was \c{int}, not
\c{qint64}.
\sa stop(), isActive(), QObject::timerEvent(), Qt::CoarseTimer
*/
void QBasicTimer::start(qint64 msec, QObject *obj)
void QBasicTimer::start(std::chrono::milliseconds duration, QObject *object)
{
start(msec, Qt::CoarseTimer, obj);
start(duration, Qt::CoarseTimer, object);
}
/*!
\fn QBasicTimer::start(int msec, Qt::TimerType timerType, QObject *obj)
\overload
\obsolete
Starts (or restarts) the timer with a \a msec milliseconds timeout and the
Use chrono overload instead.
*/
/*!
\since 6.5
Starts (or restarts) the timer with a \a duration timeout and the
given \a timerType. See Qt::TimerType for information on the different
timer types.
\a obj will receive timer events.
\note In Qt versions prior to 6.5, \a msec was \c{int}, not
\c{qint64}.
\sa stop(), isActive(), QObject::timerEvent(), Qt::TimerType
*/
void QBasicTimer::start(qint64 msec, Qt::TimerType timerType, QObject *obj)
void QBasicTimer::start(std::chrono::milliseconds duration, Qt::TimerType timerType, QObject *obj)
{
QAbstractEventDispatcher *eventDispatcher = QAbstractEventDispatcher::instance();
if (Q_UNLIKELY(msec < 0)) {
if (Q_UNLIKELY(duration.count() < 0)) {
qWarning("QBasicTimer::start: Timers cannot have negative timeouts");
return;
}
@ -151,7 +159,7 @@ void QBasicTimer::start(qint64 msec, Qt::TimerType timerType, QObject *obj)
}
stop();
if (obj)
id = eventDispatcher->registerTimer(msec, timerType, obj);
id = eventDispatcher->registerTimer(duration.count(), timerType, obj);
}
/*!

View File

@ -7,6 +7,8 @@
#include <QtCore/qglobal.h>
#include <QtCore/qnamespace.h>
#include <chrono>
QT_BEGIN_NAMESPACE
@ -31,16 +33,28 @@ public:
bool isActive() const noexcept { return id != 0; }
int timerId() const noexcept { return id; }
#if QT_CORE_REMOVED_SINCE(6, 5)
QT_CORE_INLINE_SINCE(6, 5)
void start(int msec, QObject *obj);
QT_CORE_INLINE_SINCE(6, 5)
void start(int msec, Qt::TimerType timerType, QObject *obj);
#endif
void start(qint64 msec, QObject *obj);
void start(qint64 msec, Qt::TimerType timerType, QObject *obj);
void start(std::chrono::milliseconds duration, QObject *obj);
void start(std::chrono::milliseconds duration, Qt::TimerType timerType, QObject *obj);
void stop();
};
Q_DECLARE_TYPEINFO(QBasicTimer, Q_RELOCATABLE_TYPE);
#if QT_CORE_INLINE_IMPL_SINCE(6, 5)
void QBasicTimer::start(int msec, QObject *obj)
{
start(std::chrono::milliseconds{msec}, obj);
}
void QBasicTimer::start(int msec, Qt::TimerType t, QObject *obj)
{
start(std::chrono::milliseconds{msec}, t, obj);
}
#endif
inline void swap(QBasicTimer &lhs, QBasicTimer &rhs) noexcept { lhs.swap(rhs); }
QT_END_NAMESPACE