void QSGNodeVisitor::visitNode(QSGNode *n) { switch (n->type()) { case QSGNode::TransformNodeType: { QSGTransformNode *t = static_cast<QSGTransformNode *>(n); enterTransformNode(t); visitChildren(t); leaveTransformNode(t); break; } case QSGNode::GeometryNodeType: { QSGGeometryNode *g = static_cast<QSGGeometryNode *>(n); enterGeometryNode(g); visitChildren(g); leaveGeometryNode(g); break; } case QSGNode::ClipNodeType: { QSGClipNode *c = static_cast<QSGClipNode *>(n); enterClipNode(c); visitChildren(c); leaveClipNode(c); break; } case QSGNode::OpacityNodeType: { QSGOpacityNode *o = static_cast<QSGOpacityNode *>(n); enterOpacityNode(o); visitChildren(o); leaveOpacityNode(o); break; } default: visitChildren(n); break; } }
void QSGNodeUpdater::visitNode(QSGNode *n) { #ifdef QSG_UPDATER_DEBUG qDebug() << "enter:" << n; #endif if (!n->dirtyFlags() && !m_force_update) return; if (n->isSubtreeBlocked()) return; bool forceUpdate = n->dirtyFlags() & (QSGNode::DirtyNodeAdded | QSGNode::DirtyForceUpdate); if (forceUpdate) ++m_force_update; switch (n->type()) { case QSGNode::TransformNodeType: { QSGTransformNode *t = static_cast<QSGTransformNode *>(n); enterTransformNode(t); visitChildren(t); leaveTransformNode(t); break; } case QSGNode::GeometryNodeType: { QSGGeometryNode *g = static_cast<QSGGeometryNode *>(n); enterGeometryNode(g); visitChildren(g); leaveGeometryNode(g); break; } case QSGNode::ClipNodeType: { QSGClipNode *c = static_cast<QSGClipNode *>(n); enterClipNode(c); visitChildren(c); leaveClipNode(c); break; } case QSGNode::OpacityNodeType: { QSGOpacityNode *o = static_cast<QSGOpacityNode *>(n); enterOpacityNode(o); visitChildren(o); leaveOpacityNode(o); break; } default: visitChildren(n); break; } if (forceUpdate) --m_force_update; n->clearDirty(); }
void QSGNodeUpdater::visitNode(QSGNode *n) { #ifdef QSG_UPDATER_DEBUG qDebug() << "enter:" << n; #endif if (!m_force_update) return; if (n->isSubtreeBlocked()) return; switch (n->type()) { case QSGNode::TransformNodeType: { QSGTransformNode *t = static_cast<QSGTransformNode *>(n); enterTransformNode(t); visitChildren(t); leaveTransformNode(t); break; } case QSGNode::GeometryNodeType: { QSGGeometryNode *g = static_cast<QSGGeometryNode *>(n); enterGeometryNode(g); visitChildren(g); leaveGeometryNode(g); break; } case QSGNode::RenderNodeType: { QSGRenderNode *r = static_cast<QSGRenderNode *>(n); enterRenderNode(r); visitChildren(r); leaveRenderNode(r); break; } case QSGNode::ClipNodeType: { QSGClipNode *c = static_cast<QSGClipNode *>(n); enterClipNode(c); visitChildren(c); leaveClipNode(c); break; } case QSGNode::OpacityNodeType: { QSGOpacityNode *o = static_cast<QSGOpacityNode *>(n); enterOpacityNode(o); visitChildren(o); leaveOpacityNode(o); break; } default: visitChildren(n); break; } }