diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2016-03-08 10:13:15 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2016-03-08 09:37:21 +0000 |
commit | 350a74ec69b535df07ad7ca45415090749c75293 (patch) | |
tree | 911d3c17b0af4f733f5449c6796014cfc9ac0d04 /src/particles/qquickv4particledata.cpp | |
parent | 922e9d6b0c7ae1acdae4986e8000ad9a693b7469 (diff) |
Particles: Shrink QQuickParticleData by 2 pointers.
Samegame creates about 23,000 particles, so this reduces the memory by
~180kb on 32bit, so ~360kb on 64bit.
Change-Id: I0581524ab232b474c5d43abeabd7ebf6174e740f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/particles/qquickv4particledata.cpp')
-rw-r--r-- | src/particles/qquickv4particledata.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/particles/qquickv4particledata.cpp b/src/particles/qquickv4particledata.cpp index 86e3c91ba8..3d7f4ce5b8 100644 --- a/src/particles/qquickv4particledata.cpp +++ b/src/particles/qquickv4particledata.cpp @@ -272,11 +272,13 @@ QT_BEGIN_NAMESPACE struct QV4ParticleData : public QV4::Object { struct Data : QV4::Object::Data { - Data(QQuickParticleData *datum) + Data(QQuickParticleData *datum, QQuickParticleSystem* particleSystem) : datum(datum) + , particleSystem(particleSystem) { } QQuickParticleData* datum;//TODO: Guard needed? + QQuickParticleSystem* particleSystem; }; V4_OBJECT(QV4::Object) }; @@ -312,7 +314,7 @@ static QV4::ReturnedValue particleData_lifeLeft(QV4::CallContext *ctx) if (!r || !r->d()->datum) return ctx->engine()->throwError(QStringLiteral("Not a valid ParticleData object")); - return QV4::Encode(r->d()->datum->lifeLeft()); + return QV4::Encode(r->d()->datum->lifeLeft(r->d()->particleSystem)); } static QV4::ReturnedValue particleData_curSize(QV4::CallContext *ctx) @@ -323,7 +325,7 @@ static QV4::ReturnedValue particleData_curSize(QV4::CallContext *ctx) if (!r || !r->d()->datum) return ctx->engine()->throwError(QStringLiteral("Not a valid ParticleData object")); - return QV4::Encode(r->d()->datum->curSize()); + return QV4::Encode(r->d()->datum->curSize(r->d()->particleSystem)); } #define COLOR_GETTER_AND_SETTER(VAR, NAME) static QV4::ReturnedValue particleData_get_ ## NAME (QV4::CallContext *ctx) \ { \ @@ -397,7 +399,7 @@ static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\ if (!r || !r->d()->datum) \ ctx->engine()->throwError(QStringLiteral("Not a valid ParticleData object")); \ \ - return QV4::Encode(r->d()->datum-> GETTER ());\ + return QV4::Encode(r->d()->datum-> GETTER (r->d()->particleSystem));\ }\ \ static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\ @@ -407,7 +409,7 @@ static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::CallContext *ctx)\ if (!r || !r->d()->datum)\ ctx->engine()->throwError(QStringLiteral("Not a valid ParticleData object"));\ \ - r->d()->datum-> SETTER (ctx->argc() ? ctx->args()[0].toNumber() : qQNaN());\ + r->d()->datum-> SETTER (ctx->argc() ? ctx->args()[0].toNumber() : qQNaN(), r->d()->particleSystem);\ return QV4::Encode::undefined(); \ } @@ -503,7 +505,7 @@ QV4ParticleDataDeletable::~QV4ParticleDataDeletable() V4_DEFINE_EXTENSION(QV4ParticleDataDeletable, particleV4Data); -QQuickV4ParticleData::QQuickV4ParticleData(QV8Engine* engine, QQuickParticleData* datum) +QQuickV4ParticleData::QQuickV4ParticleData(QV8Engine* engine, QQuickParticleData* datum, QQuickParticleSystem *system) { if (!engine || !datum) return; @@ -511,7 +513,7 @@ QQuickV4ParticleData::QQuickV4ParticleData(QV8Engine* engine, QQuickParticleData QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine); QV4::Scope scope(v4); QV4ParticleDataDeletable *d = particleV4Data(scope.engine); - QV4::ScopedObject o(scope, v4->memoryManager->allocObject<QV4ParticleData>(datum)); + QV4::ScopedObject o(scope, v4->memoryManager->allocObject<QV4ParticleData>(datum, system)); QV4::ScopedObject p(scope, d->proto.value()); o->setPrototype(p); m_v4Value = o; |