aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2012-06-07 13:23:56 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-25 07:29:42 +0200
commit3ff503fb86222ebcfc882b7c1d79fd42a7b53cfc (patch)
treeebc9c2b37167dc275c34d0c62e4c758341a9d4d3 /src/particles
parent0c64967cf3317d4c9863da3c2fe130f93b27eefa (diff)
Delay custom emitter processing
It now happens after ParticlePainter intialization, so that custom emitters can affect painter specific parameters like color. Change-Id: I9a732713108580e57130588c175c69aa854c5b2f Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/particles')
-rw-r--r--src/particles/qquickparticleemitter.cpp7
-rw-r--r--src/particles/qquicktrailemitter.cpp7
2 files changed, 9 insertions, 5 deletions
diff --git a/src/particles/qquickparticleemitter.cpp b/src/particles/qquickparticleemitter.cpp
index 6e53b0940c..7db1707d74 100644
--- a/src/particles/qquickparticleemitter.cpp
+++ b/src/particles/qquickparticleemitter.cpp
@@ -472,7 +472,12 @@ void QQuickParticleEmitter::emitWindow(int timeStamp)
}
}
+ foreach (QQuickParticleData* d, toEmit)
+ m_system->emitParticle(d);
+
if (isEmitConnected()) {
+ //Done after emitParticle so that the Painter::load is done first, this allows you to customize its static variables
+ //We then don't need to request another reload, because the first reload isn't scheduled until we get back to the render thread
v8::HandleScope handle_scope;
v8::Context::Scope scope(QQmlEnginePrivate::getV8Engine(qmlEngine(this))->context());
v8::Handle<v8::Array> array = v8::Array::New(toEmit.size());
@@ -481,8 +486,6 @@ void QQuickParticleEmitter::emitWindow(int timeStamp)
emitParticles(QQmlV8Handle::fromHandle(array));//A chance for arbitrary JS changes
}
- foreach (QQuickParticleData* d, toEmit)
- m_system->emitParticle(d);
m_last_emission = pt;
diff --git a/src/particles/qquicktrailemitter.cpp b/src/particles/qquicktrailemitter.cpp
index 68b43a0e99..5f094105e1 100644
--- a/src/particles/qquicktrailemitter.cpp
+++ b/src/particles/qquicktrailemitter.cpp
@@ -118,7 +118,7 @@ QQuickTrailEmitter::QQuickTrailEmitter(QQuickItem *parent) :
\qmlproperty real QtQuick.Particles2::TrailEmitter::emitRatePerParticle
*/
/*!
- \qmlsignal QtQuick.Particles2::TrailEmitter::emitFollowParticles(Array particles, real followed)
+ \qmlsignal QtQuick.Particles2::TrailEmitter::emitFollowParticles(Array particles, QtQuick.Particles2::Particle followed)
This handler is called when particles are emitted from the \a followed particle. \a particles contains an array of particle objects which can be directly manipulated.
@@ -264,6 +264,9 @@ void QQuickTrailEmitter::emitWindow(int timeStamp)
}
}
+ foreach (QQuickParticleData* d, toEmit)
+ m_system->emitParticle(d);
+
if (isEmitConnected() || isEmitFollowConnected()) {
v8::HandleScope handle_scope;
v8::Context::Scope scope(QQmlEnginePrivate::getV8Engine(qmlEngine(this))->context());
@@ -276,8 +279,6 @@ void QQuickTrailEmitter::emitWindow(int timeStamp)
else if (isEmitConnected())
emitParticles(QQmlV8Handle::fromHandle(array));//A chance for arbitrary JS changes
}
- foreach (QQuickParticleData* d, toEmit)
- m_system->emitParticle(d);
m_lastEmission[d->index] = pt;
}