void QSGRenderer::removeNodesToPreprocess(QSGNode *node) { for (QSGNode *c = node->firstChild(); c; c = c->nextSibling()) removeNodesToPreprocess(c); if (node->flags() & QSGNode::UsePreprocess) m_nodes_to_preprocess.remove(node); }
void QSGRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyFlags flags) { Q_UNUSED(node); Q_UNUSED(flags); if (flags & QSGNode::DirtyNodeAdded) addNodesToPreprocess(node); if (flags & QSGNode::DirtyNodeRemoved) removeNodesToPreprocess(node); if (!m_changed_emitted && !m_is_rendering) { // Premature overoptimization to avoid excessive signal emissions m_changed_emitted = true; emit sceneGraphChanged(); } }
void QSGRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyState state) { if (state & QSGNode::DirtyNodeAdded) addNodesToPreprocess(node); if (state & QSGNode::DirtyNodeRemoved) removeNodesToPreprocess(node); if (state & QSGNode::DirtyUsePreprocess) { if (node->flags() & QSGNode::UsePreprocess) m_nodes_to_preprocess.insert(node); else m_nodes_to_preprocess.remove(node); } if (!m_changed_emitted && !m_is_rendering) { // Premature overoptimization to avoid excessive signal emissions m_changed_emitted = true; emit sceneGraphChanged(); } }