From a0e0b51001edfc1c7aea113c472ce995efa833fd Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 3 Sep 2020 11:18:09 +0200 Subject: [PATCH] Inline QTest::qSleep() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simply use QThread::msleep() to implement it. Change-Id: I37c255fc70951715edc489d9f67669b01af380b1 Reviewed-by: Tor Arne Vestbø --- src/corelib/kernel/qtestsupport_core.cpp | 32 ------------------------ src/corelib/kernel/qtestsupport_core.h | 12 ++++----- src/testlib/qtestcase.cpp | 6 ----- src/testlib/qtestcase.h | 3 ++- 4 files changed, 8 insertions(+), 45 deletions(-) diff --git a/src/corelib/kernel/qtestsupport_core.cpp b/src/corelib/kernel/qtestsupport_core.cpp index 928c8021bca..e6e3dfbd69b 100644 --- a/src/corelib/kernel/qtestsupport_core.cpp +++ b/src/corelib/kernel/qtestsupport_core.cpp @@ -45,18 +45,6 @@ QT_BEGIN_NAMESPACE -Q_CORE_EXPORT void QTestPrivate::qSleep(int ms) -{ - Q_ASSERT(ms > 0); - -#if defined(Q_OS_WIN) - Sleep(uint(ms)); -#else - struct timespec ts = { time_t(ms / 1000), (ms % 1000) * 1000 * 1000 }; - nanosleep(&ts, nullptr); -#endif -} - /*! \fn template bool QTest::qWaitFor(Functor predicate, int timeout) Waits for \a timeout milliseconds or until the \a predicate returns true. @@ -88,25 +76,5 @@ Q_CORE_EXPORT void QTestPrivate::qSleep(int ms) \sa QTest::qSleep(), QSignalSpy::wait() */ -Q_CORE_EXPORT void QTest::qWait(int ms) -{ - // Ideally this method would be implemented in terms of qWaitFor, with - // a predicate that always returns false, but due to a compiler bug in - // GCC 6 we can't do that. - - Q_ASSERT(QCoreApplication::instance()); - - QDeadlineTimer timer(ms, Qt::PreciseTimer); - int remaining = ms; - do { - QCoreApplication::processEvents(QEventLoop::AllEvents, remaining); - QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); - remaining = timer.remainingTime(); - if (remaining <= 0) - break; - QTestPrivate::qSleep(qMin(10, remaining)); - remaining = timer.remainingTime(); - } while (remaining > 0); -} QT_END_NAMESPACE diff --git a/src/corelib/kernel/qtestsupport_core.h b/src/corelib/kernel/qtestsupport_core.h index 24399dd7a93..03430d7680f 100644 --- a/src/corelib/kernel/qtestsupport_core.h +++ b/src/corelib/kernel/qtestsupport_core.h @@ -42,13 +42,10 @@ #include #include +#include QT_BEGIN_NAMESPACE -namespace QTestPrivate { -Q_CORE_EXPORT void qSleep(int ms); -} - namespace QTest { template @@ -78,7 +75,7 @@ Q_REQUIRED_RESULT static bool qWaitFor(Functor predicate, int timeout = 5000) remaining = int(deadline.remainingTime()); if (remaining > 0) - QTestPrivate::qSleep(qMin(10, remaining)); + QThread::msleep(qMin(10, remaining)); if (predicate()) return true; @@ -89,7 +86,10 @@ Q_REQUIRED_RESULT static bool qWaitFor(Functor predicate, int timeout = 5000) return predicate(); // Last chance } -Q_CORE_EXPORT void qWait(int ms); +inline void qWait(int ms) +{ + (void)qWaitFor([]() { return false; }, ms); +} } // namespace QTest diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 6b9da24025d..c2b33019b27 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2491,12 +2491,6 @@ bool QTest::currentTestFailed() \sa {QTest::qWait()} */ -void QTest::qSleep(int ms) -{ - // ### Qt 6, move to QtCore or remove altogether - QTEST_ASSERT(ms > 0); - QTestPrivate::qSleep(ms); -} /*! \internal */ diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index e5f2a8bbbfc..6fe962277a5 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -48,6 +48,7 @@ #include #include #include +#include #include @@ -335,7 +336,7 @@ namespace QTest char *val1, char *val2, const char *actual, const char *expected, const char *file, int line); - Q_TESTLIB_EXPORT void qSleep(int ms); + inline void qSleep(int ms) { QThread::msleep(ms); } Q_TESTLIB_EXPORT void addColumnInternal(int id, const char *name); template