summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-10-02 07:40:42 (GMT)
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-12 00:19:36 (GMT)
commit79cbdb503aec471cfb1dfcc7b36867490e4ca7ee (patch)
tree4d617817e7fa4ce51d5a66ea561495b3ef53cec1 /src/declarative
parent0ef41ffa6f721d07f5dbb5f95004f118295d44f0 (diff)
downloadQt-79cbdb503aec471cfb1dfcc7b36867490e4ca7ee.zip
Qt-79cbdb503aec471cfb1dfcc7b36867490e4ca7ee.tar.gz
Qt-79cbdb503aec471cfb1dfcc7b36867490e4ca7ee.tar.bz2
Use QVarLengthArray when creating the connectNotify() argument
This gets rid of the heap allocation of the QByteArray. This change is not needed in Qt5, as there, QMetaMethod is used as the argument, and therefore there is no need to construct a SIGNAL-compatible string in memory. Change-Id: Ie2023aeb99bc8f792d437ec604e9989a5efe456b Reviewed-by: Alan Alpert <416365416c@gmail.com>
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/qml/qdeclarativeboundsignal.cpp4
-rw-r--r--src/declarative/qml/qdeclarativenotifier_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeproperty.cpp4
3 files changed, 9 insertions, 3 deletions
diff --git a/src/declarative/qml/qdeclarativeboundsignal.cpp b/src/declarative/qml/qdeclarativeboundsignal.cpp
index d8aeef6..9bccb42 100644
--- a/src/declarative/qml/qdeclarativeboundsignal.cpp
+++ b/src/declarative/qml/qdeclarativeboundsignal.cpp
@@ -137,7 +137,9 @@ QDeclarativeBoundSignal::~QDeclarativeBoundSignal()
void QDeclarativeBoundSignal::disconnect()
{
QObjectPrivate * const priv = QObjectPrivate::get(m_scope);
- priv->disconnectNotify(QObjectPrivate::signalSignature(m_signal));
+ QVarLengthArray<char> signalSignature;
+ QObjectPrivate::signalSignature(m_signal, &signalSignature);
+ priv->disconnectNotify(signalSignature.constData());
}
int QDeclarativeBoundSignal::index() const
diff --git a/src/declarative/qml/qdeclarativenotifier_p.h b/src/declarative/qml/qdeclarativenotifier_p.h
index 0e38ec1..f15efb6 100644
--- a/src/declarative/qml/qdeclarativenotifier_p.h
+++ b/src/declarative/qml/qdeclarativenotifier_p.h
@@ -217,7 +217,9 @@ void QDeclarativeNotifierEndpoint::disconnect()
QMetaObject::disconnectOne(s->source, s->sourceSignal, target, targetMethod);
QObjectPrivate * const priv = QObjectPrivate::get(s->source);
const QMetaMethod signal = s->source->metaObject()->method(s->sourceSignal);
- priv->disconnectNotify(QObjectPrivate::signalSignature(signal));
+ QVarLengthArray<char> signalSignature;
+ QObjectPrivate::signalSignature(signal, &signalSignature);
+ priv->disconnectNotify(signalSignature.constData());
s->source = 0;
}
} else if (type == NotifierType) {
diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp
index e6b9775..ce4122a 100644
--- a/src/declarative/qml/qdeclarativeproperty.cpp
+++ b/src/declarative/qml/qdeclarativeproperty.cpp
@@ -1634,7 +1634,9 @@ bool QDeclarativePropertyPrivate::connect(QObject *sender, int signal_index,
const QMetaMethod signal = sender->metaObject()->method(signal_index);
QObjectPrivate * const senderPriv = QObjectPrivate::get(sender);
- senderPriv->connectNotify(QObjectPrivate::signalSignature(signal));
+ QVarLengthArray<char> signalSignature;
+ QObjectPrivate::signalSignature(signal, &signalSignature);
+ senderPriv->connectNotify(signalSignature.constData());
return QMetaObject::connect(sender, signal_index, receiver, method_index, type, types);
}