From: Alan Alpert Date: Mon, 19 Dec 2011 07:58:49 +0000 (+1000) Subject: Fix affector group caching X-Git-Tag: qt-v5.0.0-alpha1~811 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f3c7d8c357d8c119287cf8d520e48098170b47c5;p=profile%2Fivi%2Fqtdeclarative.git Fix affector group caching It was possible for the cache to be updated before groups were properly assigned, and it didn't update when they were. Change-Id: If6835e2aad4a2412d17eb727da5d2414e4c20d60 Reviewed-by: Martin Jones --- diff --git a/src/quick/particles/qquickparticleaffector.cpp b/src/quick/particles/qquickparticleaffector.cpp index 5bfc699..854ab34 100644 --- a/src/quick/particles/qquickparticleaffector.cpp +++ b/src/quick/particles/qquickparticleaffector.cpp @@ -159,10 +159,10 @@ void QQuickParticleAffector::componentComplete() } bool QQuickParticleAffector::activeGroup(int g) { - if (m_updateIntSet){ + if (m_updateIntSet){ //This can occur before group ids are properly assigned, but that resets the flag m_groupIds.clear(); foreach (const QString &p, m_groups) - m_groupIds << m_system->groupIds[p];//###Can this occur before group ids are properly assigned? + m_groupIds << m_system->groupIds[p]; m_updateIntSet = false; } return m_groupIds.isEmpty() || m_groupIds.contains(g); diff --git a/src/quick/particles/qquickparticlesystem.cpp b/src/quick/particles/qquickparticlesystem.cpp index cbb2605..87a454c 100644 --- a/src/quick/particles/qquickparticlesystem.cpp +++ b/src/quick/particles/qquickparticlesystem.cpp @@ -908,6 +908,9 @@ void QQuickParticleSystem::emittersChanged() if (particleCount > bySysIdx.size())//New datum requests haven't updated it bySysIdx.resize(particleCount); + foreach (QQuickParticleAffector *a, m_affectors)//Groups may have changed + a->m_updateIntSet = true; + foreach (QQuickParticlePainter *p, m_painters) loadPainter(p);