From 1e778ebd06c37f7a81e4247a5998d06fa849eff8 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 28 May 2012 11:14:20 +0200 Subject: [PATCH] Move implementation of QObject::senderSignalIndex() to QObjectPrivate In preparation of changing the implementation to return an index in the signals-only range, not all-methods range. Change-Id: Ib743a4bc9da27ad776ade262b215ebf988e7ab28 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qobject.cpp | 30 +++++++++++++++++++----------- src/corelib/kernel/qobject_p.h | 1 + 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index adb68f3d98b..8ce5310dee7 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2134,17 +2134,7 @@ QObject *QObject::sender() const int QObject::senderSignalIndex() const { Q_D(const QObject); - - QMutexLocker locker(signalSlotLock(this)); - if (!d->currentSender) - return -1; - - for (QObjectPrivate::Connection *c = d->senders; c; c = c->next) { - if (c->sender == d->currentSender->sender) - return d->currentSender->signal; - } - - return -1; + return d->senderSignalIndex(); } /*! @@ -3470,6 +3460,24 @@ void QMetaObject::activate(QObject *sender, int signal_index, void **argv) activate(sender, mo, signal_index - mo->methodOffset(), argv); } +/*! \internal + Implementation of QObject::senderSignalIndex() +*/ +int QObjectPrivate::senderSignalIndex() const +{ + Q_Q(const QObject); + QMutexLocker locker(signalSlotLock(q)); + if (!currentSender) + return -1; + + for (QObjectPrivate::Connection *c = senders; c; c = c->next) { + if (c->sender == currentSender->sender) + return currentSender->signal; + } + + return -1; +} + /*! \internal Returns the signal index used in the internal connectionLists vector. diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index aa6b467fd67..84e2ecd779f 100644 --- a/src/corelib/kernel/qobject_p.h +++ b/src/corelib/kernel/qobject_p.h @@ -187,6 +187,7 @@ public: return o->d_func(); } + int senderSignalIndex() const; int signalIndex(const char *signalName, const QMetaObject **meta = 0) const; inline bool isSignalConnected(uint signalIdx) const;