aboutsummaryrefslogtreecommitdiffstats
path: root/src/particles/qquickv4particledata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/particles/qquickv4particledata.cpp')
-rw-r--r--src/particles/qquickv4particledata.cpp92
1 files changed, 45 insertions, 47 deletions
diff --git a/src/particles/qquickv4particledata.cpp b/src/particles/qquickv4particledata.cpp
index 1d7b7abd9c..bd73509eeb 100644
--- a/src/particles/qquickv4particledata.cpp
+++ b/src/particles/qquickv4particledata.cpp
@@ -273,18 +273,16 @@ QT_BEGIN_NAMESPACE
//### Particle data handles are not locked to within certain scopes like QQuickContext2D, but there's no way to reload either...
struct QV4ParticleData : public QV4::Object
{
- V4_OBJECT
- QV4ParticleData(QV4::ExecutionEngine *engine, QQuickParticleData *datum)
- : Object(engine)
- {
- setVTable(staticVTable());
- this->datum = datum;
- }
-
- QQuickParticleData* datum;//TODO: Guard needed?
-
- static void destroy(Managed *that)
- { that->as<QV4ParticleData>()->~QV4ParticleData(); }
+ struct Data : QV4::Object::Data {
+ Data(QV4::ExecutionEngine *engine, QQuickParticleData *datum)
+ : Object::Data(engine)
+ , datum(datum)
+ {
+ setVTable(QV4ParticleData::staticVTable());
+ }
+ QQuickParticleData* datum;//TODO: Guard needed?
+ };
+ V4_OBJECT(QV4::Object)
};
DEFINE_OBJECT_VTABLE(QV4ParticleData);
@@ -301,55 +299,55 @@ public:
static QV4::ReturnedValue particleData_discard(QV4::CallContext *ctx)
{
QV4::Scope scope(ctx);
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject);
- if (!r || !r->datum)
+ if (!r || !r->d()->datum)
return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
- r->datum->lifeSpan = 0; //Don't kill(), because it could still be in the middle of being created
+ r->d()->datum->lifeSpan = 0; //Don't kill(), because it could still be in the middle of being created
return QV4::Encode::undefined();
}
static QV4::ReturnedValue particleData_lifeLeft(QV4::CallContext *ctx)
{
QV4::Scope scope(ctx);
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject);
- if (!r || !r->datum)
+ if (!r || !r->d()->datum)
return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
- return QV4::Encode(r->datum->lifeLeft());
+ return QV4::Encode(r->d()->datum->lifeLeft());
}
static QV4::ReturnedValue particleData_curSize(QV4::CallContext *ctx)
{
QV4::Scope scope(ctx);
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject);
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject);
- if (!r || !r->datum)
+ if (!r || !r->d()->datum)
return ctx->throwError(QStringLiteral("Not a valid ParticleData object"));
- return QV4::Encode(r->datum->curSize());
+ return QV4::Encode(r->d()->datum->curSize());
}
#define COLOR_GETTER_AND_SETTER(VAR, NAME) static QV4::ReturnedValue particleData_get_ ## NAME (QV4::CallContext *ctx) \
{ \
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum) \
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum) \
ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \
\
- return QV4::Encode((r->datum->color. VAR )/255.0);\
+ return QV4::Encode((r->d()->datum->color. VAR )/255.0);\
}\
\
static QV4::ReturnedValue particleData_set_ ## NAME (QV4::CallContext *ctx)\
{\
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum)\
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum)\
ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\
\
- double d = ctx->callData->argc ? ctx->callData->args[0].toNumber() : 0; \
- r->datum->color. VAR = qMin(255, qMax(0, (int)floor(d * 255.0)));\
+ double d = ctx->d()->callData->argc ? ctx->d()->callData->args[0].toNumber() : 0; \
+ r->d()->datum->color. VAR = qMin(255, qMax(0, (int)floor(d * 255.0)));\
return QV4::Encode::undefined(); \
}
@@ -357,63 +355,63 @@ static QV4::ReturnedValue particleData_set_ ## NAME (QV4::CallContext *ctx)\
#define SEMIBOOL_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::CallContext *ctx) \
{ \
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum) \
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum) \
ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \
\
- return QV4::Encode(r->datum-> VARIABLE);\
+ return QV4::Encode(r->d()->datum-> VARIABLE);\
}\
\
static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\
{\
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum)\
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum)\
ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\
\
- r->datum-> VARIABLE = (ctx->callData->argc && ctx->callData->args[0].toBoolean()) ? 1.0 : 0.0;\
+ r->d()->datum-> VARIABLE = (ctx->d()->callData->argc && ctx->d()->callData->args[0].toBoolean()) ? 1.0 : 0.0;\
return QV4::Encode::undefined(); \
}
#define FLOAT_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::CallContext *ctx) \
{ \
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum) \
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum) \
ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \
\
- return QV4::Encode(r->datum-> VARIABLE);\
+ return QV4::Encode(r->d()->datum-> VARIABLE);\
}\
\
static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\
{\
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum)\
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum)\
ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\
\
- r->datum-> VARIABLE = ctx->callData->argc ? ctx->callData->args[0].toNumber() : qSNaN();\
+ r->d()->datum-> VARIABLE = ctx->d()->callData->argc ? ctx->d()->callData->args[0].toNumber() : qSNaN();\
return QV4::Encode::undefined(); \
}
#define FAKE_FLOAT_GETTER_AND_SETTER(VARIABLE, GETTER, SETTER) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::CallContext *ctx) \
{ \
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum) \
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum) \
ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \
\
- return QV4::Encode(r->datum-> GETTER ());\
+ return QV4::Encode(r->d()->datum-> GETTER ());\
}\
\
static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\
{\
QV4::Scope scope(ctx); \
- QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \
- if (!r || !r->datum)\
+ QV4::Scoped<QV4ParticleData> r(scope, ctx->d()->callData->thisObject); \
+ if (!r || !r->d()->datum)\
ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\
\
- r->datum-> SETTER (ctx->callData->argc ? ctx->callData->args[0].toNumber() : qSNaN());\
+ r->d()->datum-> SETTER (ctx->d()->callData->argc ? ctx->d()->callData->args[0].toNumber() : qSNaN());\
return QV4::Encode::undefined(); \
}
@@ -518,7 +516,7 @@ QQuickV4ParticleData::QQuickV4ParticleData(QV8Engine* engine, QQuickParticleData
QV8ParticleDataDeletable *d = particleV8Data(engine);
QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine);
QV4::Scope scope(v4);
- QV4::ScopedObject o(scope, new (v4->memoryManager) QV4ParticleData(v4, datum));
+ QV4::ScopedObject o(scope, v4->memoryManager->alloc<QV4ParticleData>(v4, datum));
QV4::ScopedObject p(scope, d->proto.value());
o->setPrototype(p.getPointer());
m_v4Value = o;