aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-06-12 15:02:42 +0200
committerLars Knoll <lars.knoll@digia.com>2013-06-12 15:56:12 +0200
commit728879def455979bb091773d4dedd4ee3277e635 (patch)
treefce4b156a1315b121035dc818f4b8228fe1a85b3 /src/particles
parenta3b88ec8988247c8d36a8786a557bd160a9131ba (diff)
Convert v8::Array usage in particles to V4
Change-Id: Ib3c39903bf8f8507d68f94baea81b3bf642ce8f6 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/particles')
-rw-r--r--src/particles/qquickcustomaffector.cpp13
-rw-r--r--src/particles/qquickparticleemitter.cpp9
-rw-r--r--src/particles/qquicktrailemitter.cpp11
3 files changed, 21 insertions, 12 deletions
diff --git a/src/particles/qquickcustomaffector.cpp b/src/particles/qquickcustomaffector.cpp
index 37db984e92..40d0df1a22 100644
--- a/src/particles/qquickcustomaffector.cpp
+++ b/src/particles/qquickcustomaffector.cpp
@@ -143,13 +143,16 @@ void QQuickCustomAffector::affectSystem(qreal dt)
if (m_onceOff)
dt = 1.0;
- v8::Handle<v8::Array> array = v8::Array::New(toAffect.size());
+ QQmlEngine *qmlEngine = ::qmlEngine(this);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(qmlEngine->handle());
+
+ QV4::ArrayObject *array = v4->newArrayObject(toAffect.size());
for (int i=0; i<toAffect.size(); i++)
- array->Set(i, toAffect[i]->v4Value().toValue());
+ array->putIndexed(i, toAffect[i]->v4Value().toValue());
if (dt >= simulationCutoff || dt <= simulationDelta) {
affectProperties(toAffect, dt);
- emit affectParticles(QQmlV4Handle(array->v4Value()), dt);
+ emit affectParticles(QQmlV4Handle(QV4::Value::fromObject(array)), dt);
} else {
int realTime = m_system->timeInt;
m_system->timeInt -= dt * 1000.0;
@@ -157,12 +160,12 @@ void QQuickCustomAffector::affectSystem(qreal dt)
m_system->timeInt += simulationDelta * 1000.0;
dt -= simulationDelta;
affectProperties(toAffect, simulationDelta);
- emit affectParticles(QQmlV4Handle(array->v4Value()), simulationDelta);
+ emit affectParticles(QQmlV4Handle(QV4::Value::fromObject(array)), simulationDelta);
}
m_system->timeInt = realTime;
if (dt > 0.0) {
affectProperties(toAffect, dt);
- emit affectParticles(QQmlV4Handle(array->v4Value()), dt);
+ emit affectParticles(QQmlV4Handle(QV4::Value::fromObject(array)), dt);
}
}
diff --git a/src/particles/qquickparticleemitter.cpp b/src/particles/qquickparticleemitter.cpp
index 630565f8f2..cc410fbfbe 100644
--- a/src/particles/qquickparticleemitter.cpp
+++ b/src/particles/qquickparticleemitter.cpp
@@ -477,13 +477,16 @@ void QQuickParticleEmitter::emitWindow(int timeStamp)
m_system->emitParticle(d);
if (isEmitConnected()) {
+ QQmlEngine *qmlEngine = ::qmlEngine(this);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(qmlEngine->handle());
+
//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::Handle<v8::Array> array = v8::Array::New(toEmit.size());
+ QV4::ArrayObject *array = v4->newArrayObject(toEmit.size());
for (int i=0; i<toEmit.size(); i++)
- array->Set(i, toEmit[i]->v4Value().toValue());
+ array->putIndexed(i, toEmit[i]->v4Value().toValue());
- emitParticles(QQmlV4Handle(array->v4Value()));//A chance for arbitrary JS changes
+ emitParticles(QQmlV4Handle(QV4::Value::fromObject(array)));//A chance for arbitrary JS changes
}
m_last_emission = pt;
diff --git a/src/particles/qquicktrailemitter.cpp b/src/particles/qquicktrailemitter.cpp
index 85cc23cd8b..4f4a05d09a 100644
--- a/src/particles/qquicktrailemitter.cpp
+++ b/src/particles/qquicktrailemitter.cpp
@@ -269,14 +269,17 @@ void QQuickTrailEmitter::emitWindow(int timeStamp)
m_system->emitParticle(d);
if (isEmitConnected() || isEmitFollowConnected()) {
- v8::Handle<v8::Array> array = v8::Array::New(toEmit.size());
+ QQmlEngine *qmlEngine = ::qmlEngine(this);
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(qmlEngine->handle());
+
+ QV4::ArrayObject *array = v4->newArrayObject(toEmit.size());
for (int i=0; i<toEmit.size(); i++)
- array->Set(i, toEmit[i]->v4Value().toValue());
+ array->putIndexed(i, toEmit[i]->v4Value().toValue());
if (isEmitFollowConnected())
- emitFollowParticles(QQmlV4Handle(array->v4Value()), d->v4Value());//A chance for many arbitrary JS changes
+ emitFollowParticles(QQmlV4Handle(QV4::Value::fromObject(array)), d->v4Value());//A chance for many arbitrary JS changes
else if (isEmitConnected())
- emitParticles(QQmlV4Handle(array->v4Value()));//A chance for arbitrary JS changes
+ emitParticles(QQmlV4Handle(QV4::Value::fromObject(array)));//A chance for arbitrary JS changes
}
m_lastEmission[d->index] = pt;
}