Move implementation of QObject::senderSignalIndex() to QObjectPrivate
authorKent Hansen <kent.hansen@nokia.com>
Mon, 28 May 2012 09:14:20 +0000 (11:14 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 31 May 2012 23:21:43 +0000 (01:21 +0200)
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 <ogoffart@woboq.com>
src/corelib/kernel/qobject.cpp
src/corelib/kernel/qobject_p.h

index adb68f3..8ce5310 100644 (file)
@@ -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();
 }
 
 /*!
@@ -3471,6 +3461,24 @@ void QMetaObject::activate(QObject *sender, int signal_index, void **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.
 
     It is different from QMetaObject::indexOfSignal():  indexOfSignal is the same as indexOfMethod
index aa6b467..84e2ecd 100644 (file)
@@ -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;