summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-04-08 18:32:44 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-09 15:10:57 +0200
commit6de87734c623d0b6ecfea0440ee396a00d59d74f (patch)
tree2356e9e02d00810447f1ce73f6305c8b1f78bd31 /src
parenta0569a3c26b64782d1bdf39e3b45641659b2bc14 (diff)
Widgets: Fix a crash on shutdown
The root node doesn't clean itself up immediately inside the SG renderer when destroyed. Just avoid the issue by destroying the renderer first. Change-Id: I833b7fdc411f149631fd13d1c1fca515b9402bf4 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp2
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
index 19f7272be..7c012e54c 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -53,9 +53,9 @@
RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(RenderWidgetHostViewQtDelegateClient *client, QWidget *parent)
: QOpenGLWidget(parent)
, m_client(client)
+ , rootNode(new QSGRootNode)
, sgContext(QSGContext::createDefaultContext())
, sgRenderContext(new QSGRenderContext(sgContext.data()))
- , rootNode(new QSGRootNode)
, m_isPopup(false)
{
setFocusPolicy(Qt::ClickFocus);
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
index 7c3492e17..f7b83e5f5 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
@@ -86,9 +86,10 @@ protected:
private:
RenderWidgetHostViewQtDelegateClient *m_client;
+ // Put the root node first to make sure it gets destroyed after the SG renderer.
+ QScopedPointer<QSGRootNode> rootNode;
QScopedPointer<QSGContext> sgContext;
QScopedPointer<QSGRenderContext> sgRenderContext;
- QScopedPointer<QSGRootNode> rootNode;
QScopedPointer<QSGRenderer> sgRenderer;
bool m_isPopup;
};