aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2015-04-16 14:09:35 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-04-27 07:45:24 +0000
commit880868364f456585a9d640ea4a1a8bf84ea885c6 (patch)
treea9dd3ec11490fecee02d6e40e3d0dbca7a823734
parenteef0584248b35258cba472c3b878a100b490b562 (diff)
Save one more pointer for every binding
Change-Id: I434fda86b8e06484548be416f92a3cde9df6b906 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
-rw-r--r--src/qml/qml/qqmlbinding.cpp26
-rw-r--r--src/qml/qml/qqmlbinding_p.h12
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