58void QSGNodeUpdater::enterTransformNode(QSGTransformNode *t)
60#ifdef QSG_UPDATER_DEBUG
61 qDebug() <<
"enter transform:" << t <<
"force=" << m_force_update;
64 if (!t->matrix().isIdentity()) {
65 if (!m_combined_matrix_stack.isEmpty()) {
66 t->setCombinedMatrix(*m_combined_matrix_stack.last() * t->matrix());
68 t->setCombinedMatrix(t->matrix());
70 m_combined_matrix_stack.add(&t->combinedMatrix());
72 if (!m_combined_matrix_stack.isEmpty()) {
73 t->setCombinedMatrix(*m_combined_matrix_stack.last());
75 t->setCombinedMatrix(QMatrix4x4());
136void QSGNodeUpdater::enterRenderNode(QSGRenderNode *r)
138#ifdef QSG_UPDATER_DEBUG
139 qDebug() <<
"enter render:" << r;
142 QSGRenderNodePrivate *rd = QSGRenderNodePrivate::get(r);
143 rd->m_matrix = m_combined_matrix_stack.isEmpty() ? 0 : m_combined_matrix_stack.last();
144 rd->m_clip_list = m_current_clip;
145 rd->m_opacity = m_opacity_stack.last();
185void QSGNodeUpdater::visitNode(QSGNode *n)
187#ifdef QSG_UPDATER_DEBUG
188 qDebug() <<
"enter:" << n;
193 if (n->isSubtreeBlocked())
197 case QSGNode::TransformNodeType: {
198 QSGTransformNode *t =
static_cast<QSGTransformNode *>(n);
199 enterTransformNode(t);
201 leaveTransformNode(t);
203 case QSGNode::GeometryNodeType: {
204 QSGGeometryNode *g =
static_cast<QSGGeometryNode *>(n);
205 enterGeometryNode(g);
207 leaveGeometryNode(g);
209 case QSGNode::RenderNodeType: {
210 QSGRenderNode *r =
static_cast<QSGRenderNode *>(n);
215 case QSGNode::ClipNodeType: {
216 QSGClipNode *c =
static_cast<QSGClipNode *>(n);
221 case QSGNode::OpacityNodeType: {
222 QSGOpacityNode *o =
static_cast<QSGOpacityNode *>(n);