diff options
Diffstat (limited to 'src/declarative/qml/qdeclarativefastproperties.cpp')
-rw-r--r-- | src/declarative/qml/qdeclarativefastproperties.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/declarative/qml/qdeclarativefastproperties.cpp b/src/declarative/qml/qdeclarativefastproperties.cpp index 5c447eef41..93703e2bdc 100644 --- a/src/declarative/qml/qdeclarativefastproperties.cpp +++ b/src/declarative/qml/qdeclarativefastproperties.cpp @@ -41,7 +41,8 @@ #include "private/qdeclarativefastproperties_p.h" -#include <private/qdeclarativeitem_p.h> +#include <private/qdeclarativedata_p.h> +#include <private/qdeclarativenotifier_p.h> QT_BEGIN_NAMESPACE @@ -51,6 +52,13 @@ QT_BEGIN_NAMESPACE // primarily read from bindings is a candidate for inclusion as a fast // property. +Q_GLOBAL_STATIC(QDeclarativeFastProperties, fastProperties) + +QDeclarativeFastProperties *QDeclarativeFastProperties::instance() +{ + return fastProperties(); +} + static void QObject_objectName(QObject *object, void *output, QDeclarativeNotifierEndpoint *endpoint) { if (endpoint) @@ -60,8 +68,6 @@ static void QObject_objectName(QObject *object, void *output, QDeclarativeNotifi QDeclarativeFastProperties::QDeclarativeFastProperties() { - add(&QDeclarativeItem::staticMetaObject, QDeclarativeItem::staticMetaObject.indexOfProperty("parent"), - QDeclarativeItemPrivate::parentProperty); add(&QObject::staticMetaObject, QObject::staticMetaObject.indexOfProperty("objectName"), QObject_objectName); } @@ -75,6 +81,7 @@ int QDeclarativeFastProperties::accessorIndexForProperty(const QMetaObject *meta while (metaObject->propertyOffset() > propertyIndex) metaObject = metaObject->superClass(); + QReadLocker lock(&m_lock); QHash<QPair<const QMetaObject *, int>, int>::Iterator iter = m_index.find(qMakePair(metaObject, propertyIndex)); if (iter != m_index.end()) @@ -93,6 +100,7 @@ void QDeclarativeFastProperties::add(const QMetaObject *metaObject, int property metaObject = metaObject->superClass(); QPair<const QMetaObject *, int> data = qMakePair(metaObject, propertyIndex); + QWriteLocker lock(&m_lock); int accessorIndex = m_accessors.count(); m_accessors.append(accessor); m_index.insert(data, accessorIndex); |