diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-23 15:52:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-26 09:05:16 +0200 |
commit | 12fd2ccd3fa2dc0133b5a3fb89f9fdf5cf721232 (patch) | |
tree | 880acb9c7c0d8289185b6aebe4339f439c707a0e /src/qml/util | |
parent | 2e4f66caa8a5f9e887dbdb4e3f2ae5c9be9a7005 (diff) |
Fix Persistent/WeakValue API
Don't use unprotected Values in the API anymore.
Change-Id: I8851628227fca374de24701bc8ee0908b5ae3923
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/util')
-rw-r--r-- | src/qml/util/qqmladaptormodel.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/qml/util/qqmladaptormodel.cpp b/src/qml/util/qqmladaptormodel.cpp index 7351e696c6..c4ba42c84a 100644 --- a/src/qml/util/qqmladaptormodel.cpp +++ b/src/qml/util/qqmladaptormodel.cpp @@ -228,7 +228,7 @@ public: p->setGetter(new (v4->memoryManager) QV4::IndexedBuiltinFunction(v4->rootContext, propertyId, QQmlDMCachedModelData::get_property)); p->setSetter(new (v4->memoryManager) QV4::IndexedBuiltinFunction(v4->rootContext, propertyId, QQmlDMCachedModelData::set_property)); } - prototype = proto.asValue(); + prototype = proto; } // QAbstractDynamicMetaObject @@ -424,12 +424,12 @@ public: QQmlAdaptorModelEngineData * const data = engineData(v4->v8Engine); type->initializeConstructor(data); } - QV4::Object *proto = type->prototype.value().asObject(); - QV4::Object *o = new (proto->engine()->memoryManager) QQmlDelegateModelItemObject(proto->engine(), this); - o->setPrototype(proto); - QV4::Value data = QV4::Value::fromObject(o); + QV4::Scope scope(v4); + QV4::ScopedObject proto(scope, type->prototype.value()); + QV4::ScopedObject o(scope, new (proto->engine()->memoryManager) QQmlDelegateModelItemObject(proto->engine(), this)); + o->setPrototype(proto.getPointer()); ++scriptRef; - return data.asReturnedValue(); + return o.asReturnedValue(); } }; @@ -599,11 +599,12 @@ public: QV4::ReturnedValue get() { QQmlAdaptorModelEngineData *data = engineData(v4->v8Engine); - QV4::Object *o = new (v4->memoryManager) QQmlDelegateModelItemObject(v4, this); - o->setPrototype(data->listItemProto.value().asObject()); - QV4::Value val = QV4::Value::fromObject(o); + QV4::Scope scope(v4); + QV4::ScopedObject o(scope, new (v4->memoryManager) QQmlDelegateModelItemObject(v4, this)); + QV4::ScopedObject p(scope, data->listItemProto.value()); + o->setPrototype(p.getPointer()); ++scriptRef; - return val.asReturnedValue(); + return o.asReturnedValue(); } void setValue(const QString &role, const QVariant &value) |