aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2011-06-10 10:29:05 +1000
committerAaron Kennedy <aaron.kennedy@nokia.com>2011-06-10 10:29:05 +1000
commitdf4add062fc7368d9fee7c697405c43422b0af27 (patch)
treeed6fb7ed82d7511d0c85cea86ddaafcaae0c91f8
parent250763ffb5cef2173b80b0e67266c937850ff516 (diff)
Use optimized QObject wrapper whenever it is possible
-rw-r--r--src/declarative/qml/v8/qv8qobjectwrapper.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/declarative/qml/v8/qv8qobjectwrapper.cpp b/src/declarative/qml/v8/qv8qobjectwrapper.cpp
index 02eb346137..d1bf0e399c 100644
--- a/src/declarative/qml/v8/qv8qobjectwrapper.cpp
+++ b/src/declarative/qml/v8/qv8qobjectwrapper.cpp
@@ -687,7 +687,6 @@ v8::Local<v8::Object> QDeclarativePropertyCache::newQObject(QObject *object, QV8
v8::AccessorGetter fastgetter = 0;
-
if (property->isQObject())
fastgetter = QObjectValueGetter;
else if (property->propType == QMetaType::Int || property->isEnum())
@@ -751,6 +750,11 @@ v8::Local<v8::Object> QV8QObjectWrapper::newQObject(QObject *object, QDeclarativ
{
v8::Local<v8::Object> rv;
+ if (!ddata->propertyCache && engine->engine()) {
+ ddata->propertyCache = QDeclarativeEnginePrivate::get(engine->engine())->cache(object);
+ if (ddata->propertyCache) ddata->propertyCache->addref();
+ }
+
if (ddata->propertyCache) {
rv = ddata->propertyCache->newQObject(object, engine);
} else {