diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-04-16 14:09:35 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-27 07:45:24 +0000 |
commit | 880868364f456585a9d640ea4a1a8bf84ea885c6 (patch) | |
tree | a9dd3ec11490fecee02d6e40e3d0dbca7a823734 /src/qml | |
parent | eef0584248b35258cba472c3b878a100b490b562 (diff) |
Save one more pointer for every binding
Change-Id: I434fda86b8e06484548be416f92a3cde9df6b906
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 26 | ||||
-rw-r--r-- | src/qml/qml/qqmlbinding_p.h | 12 |
2 files changed, 13 insertions, 25 deletions
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index d691e67a1e..b9ca15af27 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -54,9 +54,7 @@ QQmlBinding::Identifier QQmlBinding::Invalid = -1; QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) : QQmlJavaScriptExpression(), - QQmlAbstractBinding(Binding), - m_updating(false), - m_enabled(false) + QQmlAbstractBinding(Binding) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(QQmlContextData::get(ctxt)); @@ -68,9 +66,7 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlContext *ctxt) : QQmlJavaScriptExpression(), - QQmlAbstractBinding(Binding), - m_updating(false), - m_enabled(false) + QQmlAbstractBinding(Binding) { if (ctxt && !ctxt->isValid()) return; @@ -105,9 +101,7 @@ QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlConte QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt) : QQmlJavaScriptExpression(), - QQmlAbstractBinding(Binding), - m_updating(false), - m_enabled(false) + QQmlAbstractBinding(Binding) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(ctxt); @@ -121,9 +115,7 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt, const QString &url, quint16 lineNumber, quint16 columnNumber) : QQmlJavaScriptExpression(), - QQmlAbstractBinding(Binding), - m_updating(false), - m_enabled(false) + QQmlAbstractBinding(Binding) { Q_UNUSED(columnNumber); setNotifyOnValueChanged(true); @@ -136,9 +128,7 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlBinding::QQmlBinding(const QV4::Value &functionPtr, QObject *obj, QQmlContextData *ctxt) : QQmlJavaScriptExpression(), - QQmlAbstractBinding(Binding), - m_updating(false), - m_enabled(false) + QQmlAbstractBinding(Binding) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(ctxt); @@ -189,7 +179,7 @@ void QQmlBinding::update(QQmlPropertyPrivate::WriteFlags flags) QQmlBinding *t = this; int status = -1; void *a[] = { &t, 0, &status, &flags }; - QMetaObject::metacall(m_coreObject, QMetaObject::WriteProperty, idx, a); + QMetaObject::metacall(*m_coreObject, QMetaObject::WriteProperty, idx, a); } else { ep->referenceScarceResources(); @@ -200,7 +190,7 @@ void QQmlBinding::update(QQmlPropertyPrivate::WriteFlags flags) bool needsErrorLocationData = false; if (!watcher.wasDeleted() && !hasError()) - needsErrorLocationData = !QQmlPropertyPrivate::writeBinding(m_coreObject, m_core, context(), + needsErrorLocationData = !QQmlPropertyPrivate::writeBinding(*m_coreObject, m_core, context(), this, result, isUndefined, flags); if (!watcher.wasDeleted()) { @@ -280,7 +270,7 @@ QString QQmlBinding::expression() const QObject *QQmlBinding::targetObject() const { - return m_coreObject; + return *m_coreObject; } int QQmlBinding::targetPropertyIndex() const diff --git a/src/qml/qml/qqmlbinding_p.h b/src/qml/qml/qqmlbinding_p.h index 3dbf26d1a8..99c1699168 100644 --- a/src/qml/qml/qqmlbinding_p.h +++ b/src/qml/qml/qqmlbinding_p.h @@ -106,30 +106,28 @@ private: inline bool enabledFlag() const; inline void setEnabledFlag(bool); - QObject *m_coreObject; + QFlagPointer<QObject> m_coreObject; QQmlPropertyData m_core; - uint m_updating : 1; - uint m_enabled : 1; }; bool QQmlBinding::updatingFlag() const { - return m_updating; + return m_coreObject.flag(); } void QQmlBinding::setUpdatingFlag(bool v) { - m_updating = v; + m_coreObject.setFlagValue(v); } bool QQmlBinding::enabledFlag() const { - return m_enabled; + return m_coreObject.flag2(); } void QQmlBinding::setEnabledFlag(bool v) { - m_enabled = v; + m_coreObject.setFlag2Value(v); } QT_END_NAMESPACE |