diff options
author | Lars Knoll <lars.knoll@qt.io> | 2019-01-04 14:55:28 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2019-02-08 21:55:02 +0000 |
commit | 88a2a746b7ed49f4ac4861bbf8e3a55db691fa43 (patch) | |
tree | dc86d9dd810024e6afab3d90fae0b75e9191303c /src/corelib/kernel | |
parent | 1d1e801cba01c88e75e73aa19e07d7588aa9e89b (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.cpp | 21 |
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()) |