summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2020-10-14 12:57:30 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2020-10-22 22:58:11 +0000
commit007d207a8c2409f10a586c309d8498d576a69f52 (patch)
treeaabca4fa6e44c5fa297c88815e6bb88ef74007a2 /src/corelib/kernel
parent48758816db9983c2b51db486aacff0e51e91daac (diff)
qWaitFor: check predicate before sleeping
Return immediately if processing events caused the predicate to become true. This gives us a nice speedup on tests with call qWaitForWindowExposed() or qWaitForWindowActive(), for example tst_QGraphicsView::itemsInRect_cosmeticAdjust: cocoa 1164ms -> 825ms ~30% decrease offscreen 296ms -> 15ms ~95% decrease Change-Id: Ifbab0ca662c082e7dfb609d0cb4bc1161709067b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qtestsupport_core.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/corelib/kernel/qtestsupport_core.h b/src/corelib/kernel/qtestsupport_core.h
index 7043ffcf0f..04e1c50e1c 100644
--- a/src/corelib/kernel/qtestsupport_core.h
+++ b/src/corelib/kernel/qtestsupport_core.h
@@ -75,14 +75,13 @@ template <typename Functor>
QCoreApplication::processEvents(QEventLoop::AllEvents);
QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);
- remaining = int(deadline.remainingTime());
- if (remaining > 0)
- qSleep(qMin(10, remaining));
-
if (predicate())
return true;
remaining = int(deadline.remainingTime());
+ if (remaining > 0)
+ qSleep(qMin(10, remaining));
+ remaining = int(deadline.remainingTime());
} while (remaining > 0);
return predicate(); // Last chance