From 1fc310434e789e6b7ad5b3e3ede7a840a821cbc1 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 27 Oct 2016 18:55:24 -0700 Subject: [PATCH] Fix for crash in QtWebEngineCore when rapidly switching domains Call stop on the QWebEngineView before destroying OffscreenQMLSurface. --- interface/resources/qml/controls/WebView.qml | 1 + .../entities-renderer/src/RenderableWebEntityItem.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/interface/resources/qml/controls/WebView.qml b/interface/resources/qml/controls/WebView.qml index abaf11a8e2..f388e5c120 100644 --- a/interface/resources/qml/controls/WebView.qml +++ b/interface/resources/qml/controls/WebView.qml @@ -27,6 +27,7 @@ Item { WebEngineView { id: root + objectName: "webEngineView" x: 0 y: 0 width: parent.width diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index b71fab9439..e3b86b0ea0 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -326,7 +326,17 @@ void RenderableWebEntityItem::handlePointerEvent(const PointerEvent& event) { void RenderableWebEntityItem::destroyWebSurface() { if (_webSurface) { --_currentWebCount; + + QQuickItem* rootItem = _webSurface->getRootItem(); + if (rootItem) { + QObject* obj = rootItem->findChild("webEngineView"); + if (obj) { + QMetaObject::invokeMethod(obj, "stop"); + } + } + _webSurface->pause(); + _webSurface->disconnect(_connection); QObject::disconnect(_mousePressConnection); _mousePressConnection = QMetaObject::Connection();