aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlabstractbinding_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlabstractbinding_p.h')
-rw-r--r--src/qml/qml/qqmlabstractbinding_p.h21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/qml/qml/qqmlabstractbinding_p.h b/src/qml/qml/qqmlabstractbinding_p.h
index 79107bb04c..dd14301aa9 100644
--- a/src/qml/qml/qqmlabstractbinding_p.h
+++ b/src/qml/qml/qqmlabstractbinding_p.h
@@ -96,35 +96,30 @@ public:
};
RefCount ref;
-private:
+protected:
friend class QQmlData;
friend class QQmlValueTypeProxyBinding;
friend class QQmlObjectCreator;
- typedef QSharedPointer<QQmlAbstractBinding> SharedPointer;
-
inline void setAddedToObject(bool v);
inline bool isAddedToObject() const;
inline void setNextBinding(QQmlAbstractBinding *);
- // Pointer to the next binding in the linked list of bindings.
- Ptr m_nextBinding;
-
-protected:
- QFlagPointer<QObject> m_target;
int m_targetIndex;
- bool m_isAddedToObject;
+ QFlagPointer<QObject> m_target;
+ // Pointer to the next binding in the linked list of bindings.
+ QFlagPointer<QQmlAbstractBinding> m_nextBinding;
};
void QQmlAbstractBinding::setAddedToObject(bool v)
{
- m_isAddedToObject = v;
+ m_nextBinding.setFlagValue(v);
}
bool QQmlAbstractBinding::isAddedToObject() const
{
- return m_isAddedToObject;
+ return m_nextBinding.flag();
}
QQmlAbstractBinding *QQmlAbstractBinding::nextBinding() const
@@ -134,6 +129,10 @@ QQmlAbstractBinding *QQmlAbstractBinding::nextBinding() const
void QQmlAbstractBinding::setNextBinding(QQmlAbstractBinding *b)
{
+ if (b)
+ b->ref.ref();
+ if (m_nextBinding.data() && !m_nextBinding->ref.deref())
+ delete m_nextBinding.data();
m_nextBinding = b;
}