From 0d86ca432ae39574dd644de1ebc73597a2e43974 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Sun, 27 May 2012 22:38:17 +0200 Subject: [PATCH 1/1] Use QMetaObjectPrivate::signalOffset() where appropriate computeOffsets() was unnecessarily computing the method index, when only the signal index is needed. Change-Id: Id682d4447ba283a44cf0ea15cc47bd30edccb57b Reviewed-by: Olivier Goffart --- src/corelib/kernel/qobject.cpp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 2b03771..565d5ec 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2232,10 +2232,7 @@ bool QObject::isSignalConnected(const QMetaMethod &signal) const if (signal.mobj->d.data[signal.handle + 4] & MethodCloned) signalIndex = QMetaObjectPrivate::originalClone(signal.mobj, signalIndex); - int signalOffset; - int methodOffset; - computeOffsets(signal.mobj, &signalOffset, &methodOffset); - signalIndex += signalOffset; + signalIndex += QMetaObjectPrivate::signalOffset(signal.mobj); if (signalIndex < sizeof(d->connectedSignals) * 8) return d->isSignalConnected(signalIndex); @@ -2429,9 +2426,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign return QMetaObject::Connection(0); } signal_index = QMetaObjectPrivate::originalClone(smeta, signal_index); - int signalOffset, methodOffset; - computeOffsets(smeta, &signalOffset, &methodOffset); - signal_index += signalOffset; + signal_index += QMetaObjectPrivate::signalOffset(smeta); QByteArray tmp_method_name; int membcode = extract_code(method); @@ -2734,9 +2729,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal, if (signal_index < 0) break; signal_index = QMetaObjectPrivate::originalClone(smeta, signal_index); - int signalOffset, methodOffset; - computeOffsets(smeta, &signalOffset, &methodOffset); - signal_index += signalOffset; + signal_index += QMetaObjectPrivate::signalOffset(smeta); signal_found = true; } @@ -3494,11 +3487,9 @@ int QObjectPrivate::signalIndex(const char *signalName, if (relative_index < 0) return relative_index; relative_index = QMetaObjectPrivate::originalClone(base, relative_index); - int signalOffset, methodOffset; - computeOffsets(base, &signalOffset, &methodOffset); if (meta) *meta = base; - return relative_index + signalOffset; + return relative_index + QMetaObjectPrivate::signalOffset(base); } /***************************************************************************** @@ -4166,9 +4157,7 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa delete slotObj; return QMetaObject::Connection(0); } - int signalOffset, methodOffset; - computeOffsets(senderMetaObject, &signalOffset, &methodOffset); - signal_index += signalOffset; + signal_index += QMetaObjectPrivate::signalOffset(senderMetaObject); QObject *s = const_cast(sender); QObject *r = const_cast(receiver); @@ -4323,9 +4312,7 @@ bool QObject::disconnectImpl(const QObject *sender, void **signal, const QObject qWarning("QObject::disconnect: signal not found in %s", senderMetaObject->className()); return false; } - int signalOffset, methodOffset; - computeOffsets(senderMetaObject, &signalOffset, &methodOffset); - signal_index += signalOffset; + signal_index += QMetaObjectPrivate::signalOffset(senderMetaObject); } return QMetaObjectPrivate::disconnect(sender, signal_index, senderMetaObject, receiver, -1, slot); -- 2.7.4