diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-04-13 13:30:25 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-25 14:10:47 +0000 |
commit | 57890547ebb31608df179da2fd3f8a4cd25995dc (patch) | |
tree | 595ff9191ac9f2630f62e9c1266b3a68a6a35238 | |
parent | 54daa0035c9649ab92a70ae050534832b37c09be (diff) |
Remove the QQmlContextData pointer from QQmlBinding
The pointer is never used in practice, so let's get rid of it and
save some memory.
Change-Id: I8dccafb4cd3e14397fcf1c30633d60ea7ea9ce0c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
-rw-r--r-- | src/qml/jsruntime/qv4qobjectwrapper.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 33 | ||||
-rw-r--r-- | src/qml/qml/qqmlbinding_p.h | 16 | ||||
-rw-r--r-- | src/qml/qml/qqmlobjectcreator.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 2 |
5 files changed, 33 insertions, 22 deletions
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 1a511cf5e0..f74ed15f51 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -477,7 +477,7 @@ void QObjectWrapper::setProperty(QObject *object, ExecutionContext *ctx, QQmlPro bindingFunction->initBindingLocation(); newBinding = new QQmlBinding(value, object, callingQmlContext); - newBinding->setTarget(object, *property, callingQmlContext); + newBinding->setTarget(object, *property); } } diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index 9123825f65..558fbaf713 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -63,7 +63,10 @@ QQmlAbstractBinding::VTable QQmlBinding_vtable = { QQmlBinding::Identifier QQmlBinding::Invalid = -1; QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) -: QQmlJavaScriptExpression(), QQmlAbstractBinding(Binding) + : QQmlJavaScriptExpression(), + QQmlAbstractBinding(Binding), + m_updating(false), + m_enabled(false) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(QQmlContextData::get(ctxt)); @@ -74,7 +77,10 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) } QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlContext *ctxt) -: QQmlJavaScriptExpression(), QQmlAbstractBinding(Binding) + : QQmlJavaScriptExpression(), + QQmlAbstractBinding(Binding), + m_updating(false), + m_enabled(false) { if (ctxt && !ctxt->isValid()) return; @@ -108,7 +114,10 @@ QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlConte } QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt) -: QQmlJavaScriptExpression(), QQmlAbstractBinding(Binding) + : QQmlJavaScriptExpression(), + QQmlAbstractBinding(Binding), + m_updating(false), + m_enabled(false) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(ctxt); @@ -121,7 +130,10 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt, const QString &url, quint16 lineNumber, quint16 columnNumber) -: QQmlJavaScriptExpression(), QQmlAbstractBinding(Binding) + : QQmlJavaScriptExpression(), + QQmlAbstractBinding(Binding), + m_updating(false), + m_enabled(false) { Q_UNUSED(columnNumber); setNotifyOnValueChanged(true); @@ -133,7 +145,10 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, } QQmlBinding::QQmlBinding(const QV4::Value &functionPtr, QObject *obj, QQmlContextData *ctxt) -: QQmlJavaScriptExpression(), QQmlAbstractBinding(Binding) + : QQmlJavaScriptExpression(), + QQmlAbstractBinding(Binding), + m_updating(false), + m_enabled(false) { setNotifyOnValueChanged(true); QQmlJavaScriptExpression::setContext(ctxt); @@ -323,20 +338,18 @@ void QQmlBinding::retargetBinding(QObject *t, int i) void QQmlBinding::setTarget(const QQmlProperty &prop) { - setTarget(prop.object(), QQmlPropertyPrivate::get(prop)->core, - QQmlPropertyPrivate::get(prop)->context); + setTarget(prop.object(), QQmlPropertyPrivate::get(prop)->core); } -void QQmlBinding::setTarget(QObject *object, const QQmlPropertyData &core, QQmlContextData *ctxt) +void QQmlBinding::setTarget(QObject *object, const QQmlPropertyData &core) { m_coreObject = object; m_core = core; - m_ctxt = ctxt; } QQmlProperty QQmlBinding::property() const { - return QQmlPropertyPrivate::restore(object(), m_core, *m_ctxt); + return QQmlPropertyPrivate::restore(object(), m_core, 0); } QT_END_NAMESPACE diff --git a/src/qml/qml/qqmlbinding_p.h b/src/qml/qml/qqmlbinding_p.h index 4f1c27c248..65adcae2c6 100644 --- a/src/qml/qml/qqmlbinding_p.h +++ b/src/qml/qml/qqmlbinding_p.h @@ -74,7 +74,7 @@ public: QQmlBinding(const QV4::Value &, QObject *, QQmlContextData *); void setTarget(const QQmlProperty &); - void setTarget(QObject *, const QQmlPropertyData &, QQmlContextData *); + void setTarget(QObject *, const QQmlPropertyData &); QQmlProperty property() const; void setNotifyOnValueChanged(bool); @@ -126,30 +126,28 @@ private: QPointerValuePair<QObject, Retarget> m_coreObject; QQmlPropertyData m_core; - // We store some flag bits in the following flag pointers. - // m_ctxt:flag1 - updatingFlag - // m_ctxt:flag2 - enabledFlag - QFlagPointer<QQmlContextData> m_ctxt; + uint m_updating : 1; + uint m_enabled : 1; }; bool QQmlBinding::updatingFlag() const { - return m_ctxt.flag(); + return m_updating; } void QQmlBinding::setUpdatingFlag(bool v) { - m_ctxt.setFlagValue(v); + m_updating = v; } bool QQmlBinding::enabledFlag() const { - return m_ctxt.flag2(); + return m_enabled; } void QQmlBinding::setEnabledFlag(bool v) { - m_ctxt.setFlag2Value(v); + m_enabled = v; } QT_END_NAMESPACE diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp index 3c2f3690b9..ba18967150 100644 --- a/src/qml/qml/qqmlobjectcreator.cpp +++ b/src/qml/qml/qqmlobjectcreator.cpp @@ -831,7 +831,7 @@ bool QQmlObjectCreator::setPropertyBinding(const QQmlPropertyData *property, con sharedState->allCreatedBindings.push(qmlBinding); qmlBinding->m_mePtr = &sharedState->allCreatedBindings.top(); - qmlBinding->setTarget(_bindingTarget, targetCorePropertyData, context); + qmlBinding->setTarget(_bindingTarget, targetCorePropertyData); if (targetCorePropertyData.isAlias()) { QQmlAbstractBinding *old = diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 77d76e89c8..93df3a6d89 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -434,7 +434,7 @@ void QQmlValueTypeWrapper::put(Managed *m, String *name, const Value &value) bindingFunction->initBindingLocation(); newBinding = new QQmlBinding(value, reference->d()->object, context); - newBinding->setTarget(reference->d()->object, cacheData, context); + newBinding->setTarget(reference->d()->object, cacheData); } if (reference) { |