From f3c7d8c357d8c119287cf8d520e48098170b47c5 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 19 Dec 2011 17:58:49 +1000 Subject: [PATCH] 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 --- src/quick/particles/qquickparticleaffector.cpp | 4 ++-- src/quick/particles/qquickparticlesystem.cpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) 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); -- 1.7.2.5