diff options
Diffstat (limited to 'src/particles/qquickparticlesystem.cpp')
-rw-r--r-- | src/particles/qquickparticlesystem.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp index 1499df0360..8e8c73320e 100644 --- a/src/particles/qquickparticlesystem.cpp +++ b/src/particles/qquickparticlesystem.cpp @@ -389,16 +389,21 @@ QQuickParticleData* QQuickParticleGroupData::newDatum(bool respectsLimits) bool QQuickParticleGroupData::recycle() { + m_latestAliveParticles.clear(); + while (dataHeap.top() <= m_system->timeInt) { foreach (QQuickParticleData* datum, dataHeap.pop()) { if (!datum->stillAlive(m_system)) { freeList.free(datum->index); } else { - prepareRecycler(datum); //ttl has been altered mid-way, put it back + m_latestAliveParticles.push_back(datum); } } } + for (auto particle : m_latestAliveParticles) + prepareRecycler(particle); //ttl has been altered mid-way, put it back + //TODO: If the data is clear, gc (consider shrinking stack size)? return freeList.count() == 0; } |