Make initialize work despite pending resets
authorAlan Alpert <alan.alpert@nokia.com>
Tue, 1 Nov 2011 10:13:35 +0000 (20:13 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 2 Nov 2011 07:25:58 +0000 (08:25 +0100)
This allows for the data to be updated instantly, instead of waiting for
the reset in the next paint event. This is needed by the
QQuickImageParticle autotest to pass stably.

Change-Id: I554eb9d9ddbfc6ba06264dedafb14498685e04cf
Reviewed-by: Martin Jones <martin.jones@nokia.com>

src/declarative/particles/qquickimageparticle.cpp
src/declarative/particles/qquickparticlepainter.cpp
tests/auto/particles/qquickimageparticle/qquickimageparticle.pro

index 49bdcb2..0847d06 100644 (file)
@@ -1518,7 +1518,13 @@ void QQuickImageParticle::initialize(int gIdx, int pIdx)
     qreal redVariation = m_color_variation + m_redVariation;
     qreal greenVariation = m_color_variation + m_greenVariation;
     qreal blueVariation = m_color_variation + m_blueVariation;
-    int spriteIdx = m_idxStarts[gIdx] + datum->index;
+    int spriteIdx = 0;
+    if (m_spriteEngine) {
+        spriteIdx = m_idxStarts[gIdx] + datum->index;
+        if (spriteIdx >= m_spriteEngine->count())
+            m_spriteEngine->setCount(spriteIdx+1);
+    }
+
     float rotation;
     float rotationSpeed;
     float autoRotate;
index cc0b4da..6d44e9a 100644 (file)
@@ -91,9 +91,9 @@ void QQuickParticlePainter::setSystem(QQuickParticleSystem *arg)
 
 void QQuickParticlePainter::load(QQuickParticleData* d)
 {
+    initialize(d->group, d->index);
     if (m_pleaseReset)
         return;
-    initialize(d->group, d->index);
     m_pendingCommits << qMakePair<int, int>(d->group, d->index);
 }
 
index 2ae5159..14d28fd 100644 (file)
@@ -8,4 +8,3 @@ testDataFiles.path = .
 DEPLOYMENT += testDataFiles
 
 QT += core-private gui-private v8-private declarative-private opengl-private testlib
-CONFIG += insignificant_test