summaryrefslogtreecommitdiffstats
path: root/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/quick/render_widget_host_view_qt_delegate_quick.cpp')
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
index 8989759f6..2d90e772b 100644
--- a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
+++ b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
@@ -58,10 +58,29 @@ void RenderWidgetHostViewQtDelegateQuick::update(const QRect&)
QQuickItem::update();
}
+void RenderWidgetHostViewQtDelegateQuick::itemChange(ItemChange change, const ItemChangeData &value)
+{
+ QQuickItem::itemChange(change, value);
+ if (change == QQuickItem::ItemSceneChange && value.window)
+ connect(value.window, SIGNAL(frameSwapped()), SLOT(onFrameSwapped()));
+}
+
QSGNode *RenderWidgetHostViewQtDelegateQuick::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
return m_client->updatePaintNode(oldNode, QQuickItem::window());
}
+
+void RenderWidgetHostViewQtDelegateQuick::releaseResources()
+{
+ // This is the only callback we get before being removed from a window while we still know it.
+ QQuickItem::window()->disconnect(this);
+}
+
+void RenderWidgetHostViewQtDelegateQuick::onFrameSwapped()
+{
+ m_client->sendDelegatedFrameAck();
+}
+
#endif // QT_VERSION