From: Alan Alpert Date: Fri, 23 Sep 2011 04:59:06 +0000 (+1000) Subject: Fix QSGCustomParticle initialization X-Git-Tag: qt-v5.0.0-alpha1~1542 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=097d2df377b17413fe271ad722b0bf9df4867339;p=profile%2Fivi%2Fqtdeclarative.git Fix QSGCustomParticle initialization commit was failing because nodes weren't stored yet, which could lead to an apparent loss of particles. Change-Id: Ibde6aa75f6c43e2d485c163820e65e0c6ff8e952 Reviewed-on: http://codereview.qt-project.org/5437 Reviewed-by: Qt Sanity Bot Reviewed-by: Martin Jones --- diff --git a/src/declarative/particles/qsgcustomparticle.cpp b/src/declarative/particles/qsgcustomparticle.cpp index 5d1c605..707f680 100644 --- a/src/declarative/particles/qsgcustomparticle.cpp +++ b/src/declarative/particles/qsgcustomparticle.cpp @@ -480,11 +480,19 @@ QSGShaderEffectNode* QSGCustomParticle::buildCustomNodes() foreach (const QString &str, m_groups){ int gIdx = m_system->m_groupIds[str]; int count = m_system->m_groupData[gIdx]->size(); + + QSGShaderEffectNode* node = new QSGShaderEffectNode(); + m_nodes.insert(gIdx, node); + + node->setMaterial(m_material); + node->markDirty(QSGNode::DirtyMaterial); + //Create Particle Geometry int vCount = count * 4; int iCount = count * 6; QSGGeometry *g = new QSGGeometry(PlainParticle_AttributeSet, vCount, iCount); g->setDrawingMode(GL_TRIANGLES); + node->setGeometry(g); PlainVertex *vertices = (PlainVertex *) g->vertexData(); for (int p=0; p < count; ++p) { commit(gIdx, p); @@ -512,14 +520,6 @@ QSGShaderEffectNode* QSGCustomParticle::buildCustomNodes() indices[5] = o + 2; indices += 6; } - - QSGShaderEffectNode* node = new QSGShaderEffectNode(); - - node->setGeometry(g); - node->setMaterial(m_material); - node->markDirty(QSGNode::DirtyMaterial); - - m_nodes.insert(gIdx, node); } foreach (QSGShaderEffectNode* node, m_nodes){ if (node == *(m_nodes.begin()))