From: Simon Hausmann Date: Wed, 12 Jun 2013 13:02:42 +0000 (+0200) Subject: Convert v8::Array usage in particles to V4 X-Git-Tag: upstream/5.2.1~669^2~251 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=728879def455979bb091773d4dedd4ee3277e635;p=platform%2Fupstream%2Fqtdeclarative.git Convert v8::Array usage in particles to V4 Change-Id: Ib3c39903bf8f8507d68f94baea81b3bf642ce8f6 Reviewed-by: Lars Knoll --- diff --git a/src/particles/qquickcustomaffector.cpp b/src/particles/qquickcustomaffector.cpp index 37db984..40d0df1 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 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; iSet(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 630565f..cc410fb 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 array = v8::Array::New(toEmit.size()); + QV4::ArrayObject *array = v4->newArrayObject(toEmit.size()); for (int i=0; iSet(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 85cc23c..4f4a05d 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 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; iSet(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; }