aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/particles/qquickparticleemitter.cpp2
-rw-r--r--src/particles/qquickparticlesystem.cpp7
-rw-r--r--src/particles/qquickparticlesystem_p.h1
3 files changed, 9 insertions, 1 deletions
diff --git a/src/particles/qquickparticleemitter.cpp b/src/particles/qquickparticleemitter.cpp
index c72cbc01e0..6e116d450c 100644
--- a/src/particles/qquickparticleemitter.cpp
+++ b/src/particles/qquickparticleemitter.cpp
@@ -273,6 +273,8 @@ void QQuickParticleEmitter::componentComplete()
{
if (!m_system && qobject_cast<QQuickParticleSystem*>(parentItem()))
setSystem(qobject_cast<QQuickParticleSystem*>(parentItem()));
+ if (m_system)
+ m_system->finishRegisteringParticleEmitter(this);
QQuickItem::componentComplete();
}
diff --git a/src/particles/qquickparticlesystem.cpp b/src/particles/qquickparticlesystem.cpp
index 5109375f43..17d9e49d63 100644
--- a/src/particles/qquickparticlesystem.cpp
+++ b/src/particles/qquickparticlesystem.cpp
@@ -618,11 +618,16 @@ void QQuickParticleSystem::registerParticleEmitter(QQuickParticleEmitter* e)
if (m_debugMode)
qDebug() << "Registering Emitter" << e << "to" << this;
m_emitters << QPointer<QQuickParticleEmitter>(e);//###How to get them out?
+}
+
+void QQuickParticleSystem::finishRegisteringParticleEmitter(QQuickParticleEmitter* e)
+{
connect(e, SIGNAL(particleCountChanged()),
this, SLOT(emittersChanged()));
connect(e, SIGNAL(groupChanged(QString)),
this, SLOT(emittersChanged()));
- emittersChanged();
+ if (m_componentComplete)
+ emittersChanged();
e->reset();//Start, so that starttime factors appropriately
}
diff --git a/src/particles/qquickparticlesystem_p.h b/src/particles/qquickparticlesystem_p.h
index 3a119f99fe..b57d55bd98 100644
--- a/src/particles/qquickparticlesystem_p.h
+++ b/src/particles/qquickparticlesystem_p.h
@@ -430,6 +430,7 @@ public:
void registerParticlePainter(QQuickParticlePainter* p);
void registerParticleEmitter(QQuickParticleEmitter* e);
+ void finishRegisteringParticleEmitter(QQuickParticleEmitter *e);
void registerParticleAffector(QQuickParticleAffector* a);
void registerParticleGroup(QQuickParticleGroup* g);