diff options
author | Robin Burchell <robin.burchell@viroteck.net> | 2014-10-18 01:32:05 +0200 |
---|---|---|
committer | Robin Burchell <robin.burchell@viroteck.net> | 2014-10-20 13:14:02 +0200 |
commit | 41864f2e466409df080b1013145b0b35bf41d3f9 (patch) | |
tree | c6bbeea57d086bc9cad5da8771aee0630a6965af /src/particles/qquickparticlesystem.cpp | |
parent | 66a476c0ff83f8ff70022e98c5a0595888d6801b (diff) |
QQuickParticleSystem: Micro-optimize m_emitters' handling of null pointers.
This shaves off around 35ms from samegame setup of a large game.
Change-Id: I91cb7e8d8db5da672e0dcf30a3c0bb0fa855c93f
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/particles/qquickparticlesystem.cpp')
-rw-r--r-- | src/particles/qquickparticlesystem.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp index 86445ef498..a1367cfe9d 100644 --- a/src/particles/qquickparticlesystem.cpp +++ b/src/particles/qquickparticlesystem.cpp @@ -911,9 +911,6 @@ void QQuickParticleSystem::emittersChanged() if (!m_componentComplete) return; - m_emitters.removeAll(0); - - QList<int> previousSizes; QList<int> newSizes; for (int i=0; i<m_nextGroupId; i++) { @@ -921,7 +918,15 @@ void QQuickParticleSystem::emittersChanged() newSizes << 0; } - foreach (QQuickParticleEmitter* e, m_emitters) {//Populate groups and set sizes. + // Populate groups and set sizes. + for (int i = 0; i < m_emitters.count(); ++i) { + QQuickParticleEmitter *e = m_emitters.at(i); + if (!e) { + m_emitters.removeAt(i); + i--; + continue; + } + if (!e->group().isEmpty() && !groupIds.contains(e->group())) { int id = m_nextGroupId++; |