aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2019-05-24 18:02:54 +0200
committerKirill Burtsev <kirill.burtsev@qt.io>2019-05-28 14:03:33 +0200
commit306843e180207665c88de22165cf96b3d5450f42 (patch)
treed7a5f32e94d505035ee53c16c8f5e7f5ea4d18ed
parent3e716029ae61bf4c7bb33643ac331156e70e34f1 (diff)
QQuickWidget: fix missing update on show event for software renderer
The triggerUpdate call was incorrectly removed by merge 42f485231c Fixes: QTBUG-68566 Change-Id: Ibf37d88315d3ef9879e6cb9728a1c4ef4655c72b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--src/quickwidgets/qquickwidget.cpp9
-rw-r--r--tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp3
2 files changed, 7 insertions, 5 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index f1a0f0c863..b63f7de9f1 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -1314,9 +1314,13 @@ void QQuickWidget::mouseDoubleClickEvent(QMouseEvent *e)
void QQuickWidget::showEvent(QShowEvent *)
{
Q_D(QQuickWidget);
+ bool shouldTriggerUpdate = true;
+
if (!d->useSoftwareRenderer) {
d->createContext();
+
if (d->offscreenWindow->openglContext()) {
+ shouldTriggerUpdate = false;
d->render(true);
// render() may have led to a QQuickWindow::update() call (for
// example, having a scene with a QQuickFramebufferObject::Renderer
@@ -1329,11 +1333,12 @@ void QQuickWidget::showEvent(QShowEvent *)
d->updatePending = false;
update();
}
- } else {
- triggerUpdate();
}
}
+ if (shouldTriggerUpdate)
+ triggerUpdate();
+
// note offscreenWindow is "QQuickOffScreenWindow" instance
d->offscreenWindow->setVisible(true);
if (QQmlInspectorService *service = QQmlDebugConnector::service<QQmlInspectorService>())
diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
index fd5c3653ad..691dfd1bc6 100644
--- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
+++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp
@@ -449,9 +449,6 @@ void tst_qquickwidget::reparentToNewWindow()
qqw->setParent(&window2);
qqw->show();
- if (QGuiApplication::platformName() == QLatin1String("offscreen"))
- QEXPECT_FAIL("", "afterRendering not emitted after reparenting on offscreen", Continue);
-
QTRY_VERIFY(afterRenderingSpy.size() > 0);
QImage img = qqw->grabFramebuffer();