aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2015-04-13 13:30:25 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-04-25 14:10:47 +0000
commit57890547ebb31608df179da2fd3f8a4cd25995dc (patch)
tree595ff9191ac9f2630f62e9c1266b3a68a6a35238
parent54daa0035c9649ab92a70ae050534832b37c09be (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.cpp2
-rw-r--r--src/qml/qml/qqmlbinding.cpp33
-rw-r--r--src/qml/qml/qqmlbinding_p.h16
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp2
-rw-r--r--src/qml/qml/qqmlvaluetypewrapper.cpp2
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) {