From 100840a4fbe4e1dbbda32b51fe75469b9341db6d Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 1 Mar 2021 08:58:41 +0100 Subject: [PATCH] Fix tst_qgraphicseffect on Wayland If we only wait until the window is shown before testing the event delivery, we may be getting a WindowActivation event and subsequent paint event after we start testing. This can cause a shift in the paint events, so that we end up with an unexpected paint event at the end. We should wait until the window is active before we start checking the response to updates, to be sure nothing is pending on the queue still. Note that you'd expect QTest::qWaitForWindowActive() to do this, but this actually falls back to qWaitForWindowExposed() when the platform does not have WindowActivation capability. While there is no real link between WindowActivation capability and waiting for a window to be active, changing the behavior of that function would be too scary, so we just implement an explicit wait in the functions that depend on this. Task-number: QTBUG-91418 Change-Id: Iee40dcfa1377f543ea05042cc5a972270b346708 Reviewed-by: Paul Olav Tvete --- .../auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp index 16c4ba60581..3ea4a100bb0 100644 --- a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp +++ b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp @@ -694,6 +694,7 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache() QGraphicsView view(&scene); view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); + QTRY_VERIFY(view.windowHandle()->isActive()); QTRY_VERIFY(item->nbPaint >= 1); item->nbPaint = 0;