diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-12-09 01:01:09 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-12-09 12:22:24 +0000 |
commit | 8182a8044f3b9e6c25c3b50b1c7f34d2900a3207 (patch) | |
tree | 22489011cb506ada47b8a71d403d3f128bad4f10 /src/particles | |
parent | 3c4247e1e021b6bcc480afc0716e0231575d0501 (diff) | |
parent | 51e02fdc02c3cc2dbf9d2ba0b3fb709a6cd4e32e (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
src/qml/common/qv4compileddata_p.h
Change-Id: I1150c8cd0161f0e22137d383013751394ae64e18
Diffstat (limited to 'src/particles')
-rw-r--r-- | src/particles/qquickparticlesystem.cpp | 7 | ||||
-rw-r--r-- | src/particles/qquickparticlesystem_p.h | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp index 14ffc67324..158aede727 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; } diff --git a/src/particles/qquickparticlesystem_p.h b/src/particles/qquickparticlesystem_p.h index dd721a7164..7c0a1ffd7d 100644 --- a/src/particles/qquickparticlesystem_p.h +++ b/src/particles/qquickparticlesystem_p.h @@ -227,6 +227,8 @@ public: private: int m_size; QQuickParticleSystem* m_system; + // Only used in recycle() for tracking of alive particles after latest recycling round + QVector<QQuickParticleData*> m_latestAliveParticles; }; struct Color4ub { |