Implement QTest::qWait() in terms of QTest::qWaitFor()
A comment in the existing implementation encouraged doing so, but for a bug in GCC 6. We no longer care. Change-Id: Ia8cb2bc5e184510e3d756e8bbfe6bc0e852e6830 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
d41d3274d4
commit
5c908c8263
@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2018 The Qt Company Ltd.
|
** Copyright (C) 2021 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the QtCore module of the Qt Toolkit.
|
** This file is part of the QtCore module of the Qt Toolkit.
|
||||||
@ -107,23 +107,7 @@ Q_CORE_EXPORT void QTest::qSleep(int ms)
|
|||||||
*/
|
*/
|
||||||
Q_CORE_EXPORT void QTest::qWait(int ms)
|
Q_CORE_EXPORT void QTest::qWait(int ms)
|
||||||
{
|
{
|
||||||
// Ideally this method would be implemented in terms of qWaitFor, with
|
(void)qWaitFor([]() { return false; }, ms);
|
||||||
// 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;
|
|
||||||
QTest::qSleep(qMin(10, remaining));
|
|
||||||
remaining = timer.remainingTime();
|
|
||||||
} while (remaining > 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user