aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles/qquickparticlesystem.cpp
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@viroteck.net>2014-10-18 01:32:05 +0200
committerRobin Burchell <robin.burchell@viroteck.net>2014-10-20 13:14:02 +0200
commit41864f2e466409df080b1013145b0b35bf41d3f9 (patch)
treec6bbeea57d086bc9cad5da8771aee0630a6965af /src/particles/qquickparticlesystem.cpp
parent66a476c0ff83f8ff70022e98c5a0595888d6801b (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.cpp13
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++;