QSGNode* QQuickWebPage::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*) { if (!d->webPageProxy->drawingArea()) return oldNode; LayerTreeHostProxy* layerTreeHostProxy = d->webPageProxy->drawingArea()->layerTreeHostProxy(); WebLayerTreeRenderer* renderer = layerTreeHostProxy->layerTreeRenderer(); PageProxyNode* node = static_cast<PageProxyNode*>(oldNode); if (node && node->layerTreeRenderer() != renderer) { // This means that LayerTreeHostProxy was deleted and recreated while old paint node survived. // This could happen if web process have crashed. In this case we have to recreate paint node. delete node; node = 0; } renderer->syncRemoteContent(); if (!node) node = new PageProxyNode(renderer); node->setScale(d->contentsScale); return node; }
QSGNode* QQuickWebPage::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*) { if (!d->webPageProxy->drawingArea()) return oldNode; LayerTreeHostProxy* layerTreeHostProxy = d->webPageProxy->drawingArea()->layerTreeHostProxy(); WebLayerTreeRenderer* renderer = layerTreeHostProxy->layerTreeRenderer(); QtWebPageSGNode* node = static_cast<QtWebPageSGNode*>(oldNode); if (!node) node = new QtWebPageSGNode(); node->setRenderer(renderer); renderer->syncRemoteContent(); node->setScale(d->contentsScale); QColor backgroundColor = d->webPageProxy->drawsTransparentBackground() ? Qt::transparent : Qt::white; QRectF backgroundRect(QPointF(0, 0), d->contentsSize); node->setBackground(backgroundRect, backgroundColor); return node; }