Use optimized QObject wrapper whenever it is possible
authorAaron Kennedy <aaron.kennedy@nokia.com>
Fri, 10 Jun 2011 00:29:05 +0000 (10:29 +1000)
committerAaron Kennedy <aaron.kennedy@nokia.com>
Fri, 10 Jun 2011 00:29:05 +0000 (10:29 +1000)
src/declarative/qml/v8/qv8qobjectwrapper.cpp

index 02eb346..d1bf0e3 100644 (file)
@@ -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 {