summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2019-01-04 14:55:28 +0100
committerLars Knoll <lars.knoll@qt.io>2019-02-08 21:55:02 +0000
commit88a2a746b7ed49f4ac4861bbf8e3a55db691fa43 (patch)
treedc86d9dd810024e6afab3d90fae0b75e9191303c /src/corelib/kernel
parent1d1e801cba01c88e75e73aa19e07d7588aa9e89b (diff)
Always return early if no signal is connected
And simply emit the signal spy and tracing callbacks in that code path as well. Change-Id: I17f65055c7044caf1be58fac94bb7fe3487f3060 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qobject.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index c0c009f254..8a03fe2a86 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3668,12 +3668,14 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i
Q_TRACE(QMetaObject_activate_end_declarative_signal, sender, signal_index);
}
- if (!sender->d_func()->isSignalConnected(signal_index, /*checkDeclarative =*/ false)
- && !qt_signal_spy_callback_set.signal_begin_callback
- && !qt_signal_spy_callback_set.signal_end_callback
- && !Q_TRACE_ENABLED(QMetaObject_activate_begin_signal)
- && !Q_TRACE_ENABLED(QMetaObject_activate_end_signal)) {
- // The possible declarative connection is done, and nothing else is connected, so:
+ if (!sender->d_func()->isSignalConnected(signal_index, /*checkDeclarative =*/ false)) {
+ // The possible declarative connection is done, and nothing else is connected
+ if (qt_signal_spy_callback_set.signal_begin_callback != nullptr)
+ qt_signal_spy_callback_set.signal_begin_callback(sender, signal_index, argv);
+ Q_TRACE(QMetaObject_activate_begin_signal, sender, signal_index);
+ Q_TRACE(QMetaObject_activate_end_signal, sender, signal_index);
+ if (qt_signal_spy_callback_set.signal_end_callback != nullptr)
+ qt_signal_spy_callback_set.signal_end_callback(sender, signal_index);
return;
}
@@ -3711,13 +3713,6 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i
QObjectConnectionListVector *operator->() const { return connectionLists; }
};
ConnectionListsRef connectionLists = sender->d_func()->connectionLists;
- if (!connectionLists.connectionLists) {
- locker.unlock();
- if (qt_signal_spy_callback_set.signal_end_callback != 0)
- qt_signal_spy_callback_set.signal_end_callback(sender, signal_index);
- Q_TRACE(QMetaObject_activate_end_signal, sender, signal_index);
- return;
- }
const QObjectPrivate::ConnectionList *list;
if (signal_index < connectionLists->count())