diff options
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.cpp | 19 |
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 |