qt5base-lts/tests/auto
Marc Mutz e80faf3db6 QTimer: don't circumvent <chrono> safety net
By templating on the <chrono> types and unconditionally using
duration_cast to coerce the duration into a milliseconds, we
violate a principal design rule of <chrono>, namely that non-
narrowing conversions are implicit, but narrowing conversions
need duration_cast. By accepting any duration, we allow non-
sensical code such as

   QTimer::singleShot(10us, ...)

to compile, which is misleading, since it's actually a zero-
timeout timer.

Overloading a non-template with a template also has adverse
effects: it breaks qOverload().

Fix by replacing the function templates with functions that
just take std::chrono::milliseconds. This way, benign code
such as

    QTimer::singleShot(10s, ...)
    QTimer::singleShot(10min, ...)
    QTimer::singleShot(1h, ...)

work as expected, but attempts to use sub-millisecond
resolution fails to compile / needs an explicit user-
provided duration_cast.

To allow future extension to more precise timers, forcibly
inline the functions, so they don't partake in the ABI of the
class and we can later support sub-millisecond resolution by
simply taking micro- or nano- instead of milliseconds.

Change-Id: I12c9a98bdabefcd8ec18a9eb09f87ad908d889de
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 16:06:28 +00:00
..
android Updated license headers 2016-01-21 18:55:18 +00:00
bic/data BIC data files for QtBase for Qt 5.7 2016-10-03 09:38:59 +00:00
cmake Merge remote-tracking branch 'origin/5.6' into 5.7 2016-04-04 08:59:18 +02:00
compilerwarnings/data Updated license headers 2016-01-21 18:55:18 +00:00
concurrent Merge remote-tracking branch 'origin/5.6' into 5.7 2016-08-25 16:12:11 +02:00
corelib QTimer: don't circumvent <chrono> safety net 2016-10-18 16:06:28 +00:00
dbus Use qtConfig throughout in qtbase 2016-08-19 04:28:05 +00:00
gui Make self-contained test of condensed font matching and width 2016-10-16 00:11:13 +00:00
guiapplauncher Fix path to examples part of tst_GuiAppLauncher 2015-02-13 07:28:15 +00:00
installed_cmake
network Merge remote-tracking branch 'origin/5.7' into 5.8 2016-10-06 20:12:27 +02:00
opengl Change confusing Q_DEAD_CODE_FROM_QT4_FOO define 2016-10-14 08:19:29 +00:00
other create modularized version of qtplatformsupport module 2016-10-15 18:45:33 +00:00
printsupport Merge remote-tracking branch 'origin/5.6' into 5.7 2016-02-29 12:34:31 +01:00
shared Make self-contained test of condensed font matching and width 2016-10-16 00:11:13 +00:00
sql Merge remote-tracking branch 'origin/5.7' into 5.8 2016-09-21 11:57:52 +02:00
testlib Merge remote-tracking branch 'origin/5.7' into 5.8 2016-09-21 11:57:52 +02:00
tools remove unnecessary references to $$QMAKE_CFLAGS_DBUS 2016-10-04 20:21:28 +00:00
widgets QMenu: don't force platform instance creation on construction 2016-10-16 14:10:29 +00:00
xml Merge remote-tracking branch 'origin/5.7' into 5.8 2016-09-29 00:38:01 +02:00
auto.pro Use qtConfig throughout in qtbase 2016-08-19 04:28:05 +00:00
network-settings.h Merge remote-tracking branch 'origin/5.6' into 5.7 2016-05-06 15:36:44 +02:00
test.pl Updated license headers 2016-01-21 18:55:18 +00:00