diff options
Diffstat (limited to 'src/particles')
-rw-r--r-- | src/particles/qquickparticleemitter.cpp | 2 | ||||
-rw-r--r-- | src/particles/qquickparticlesystem.cpp | 7 | ||||
-rw-r--r-- | src/particles/qquickparticlesystem_p.h | 1 |
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); |