Remove v8::persistent usage from particles
authorLars Knoll <lars.knoll@digia.com>
Wed, 8 May 2013 12:36:48 +0000 (14:36 +0200)
committerSimon Hausmann <simon.hausmann@digia.com>
Wed, 8 May 2013 13:33:50 +0000 (15:33 +0200)
Change-Id: I69cd4ccf51c40e2ee63f024a7ccc2d8b35b14ae4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/particles/qquickparticlesystem.cpp
src/particles/qquickv8particledata.cpp
src/particles/qquickv8particledata_p.h

index 2043eaf..ce67fec 100644 (file)
@@ -531,7 +531,7 @@ QQmlV4Handle QQuickParticleData::v8Value()
 {
     if (!v8Datum)
         v8Datum = new QQuickV8ParticleData(QQmlEnginePrivate::getV8Engine(qmlEngine(system)), this);
-    return v8Datum->v8Value();
+    return v8Datum->v4Value();
 }
 //sets the x accleration without affecting the instantaneous x velocity or position
 void QQuickParticleData::setInstantaneousAX(qreal ax)
index 08fc141..9b8d1ad 100644 (file)
@@ -44,6 +44,7 @@
 #include "qquickparticlesystem_p.h"//for QQuickParticleData
 #include <QDebug>
 #include <private/qv4engine_p.h>
+#include <private/qv4functionobject_p.h>
 
 QT_BEGIN_NAMESPACE
 
@@ -284,7 +285,7 @@ public:
     QV8ParticleDataDeletable(QV8Engine *engine);
     ~QV8ParticleDataDeletable();
 
-    v8::Persistent<v8::Function> constructor;
+    QV4::PersistentValue constructor;
 };
 
 static QV4::Value particleData_discard(const v8::Arguments &args)
@@ -467,12 +468,11 @@ QV8ParticleDataDeletable::QV8ParticleDataDeletable(QV8Engine *engine)
     REGISTER_ACCESSOR(ft, engine, blue, blue);
     REGISTER_ACCESSOR(ft, engine, alpha, alpha);
 
-    constructor = qPersistentNew(ft->GetFunction());
+    constructor = ft->GetFunction()->v4Value();
 }
 
 QV8ParticleDataDeletable::~QV8ParticleDataDeletable()
 {
-    qPersistentDispose(constructor);
 }
 
 V8_DEFINE_EXTENSION(QV8ParticleDataDeletable, particleV8Data);
@@ -484,20 +484,19 @@ QQuickV8ParticleData::QQuickV8ParticleData(QV8Engine* engine, QQuickParticleData
         return;
 
     QV8ParticleDataDeletable *d = particleV8Data(engine);
-    m_v8Value = qPersistentNew(d->constructor->NewInstance());
+    m_v4Value = d->constructor.value().asFunctionObject()->newInstance();
     QV8ParticleDataResource *r = new QV8ParticleDataResource(engine);
     r->datum = datum;
-    m_v8Value->SetExternalResource(r);
+    v8::Handle<v8::Object>(m_v4Value)->SetExternalResource(r);
 }
 
 QQuickV8ParticleData::~QQuickV8ParticleData()
 {
-    qPersistentDispose(m_v8Value);
 }
 
-QQmlV4Handle QQuickV8ParticleData::v8Value()
+QQmlV4Handle QQuickV8ParticleData::v4Value()
 {
-    return QQmlV4Handle::fromV8Handle(m_v8Value);
+    return QQmlV4Handle::fromValue(m_v4Value);
 }
 
 QT_END_NAMESPACE
index 8c4e2ce..11cca70 100644 (file)
@@ -44,6 +44,8 @@
 
 #include <private/qv8engine_p.h>
 
+#include <private/qv4value_p.h>
+
 QT_BEGIN_NAMESPACE
 
 class QQuickParticleData;
@@ -51,9 +53,9 @@ class QQuickV8ParticleData {
 public:
     QQuickV8ParticleData(QV8Engine*,QQuickParticleData*);
     ~QQuickV8ParticleData();
-    QQmlV4Handle v8Value();
+    QQmlV4Handle v4Value();
 private:
-    v8::Persistent<v8::Object> m_v8Value;
+    QV4::PersistentValue m_v4Value;
 };