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>
This commit is contained in:
parent
1d1e801cba
commit
88a2a746b7
@ -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);
|
Q_TRACE(QMetaObject_activate_end_declarative_signal, sender, signal_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sender->d_func()->isSignalConnected(signal_index, /*checkDeclarative =*/ false)
|
if (!sender->d_func()->isSignalConnected(signal_index, /*checkDeclarative =*/ false)) {
|
||||||
&& !qt_signal_spy_callback_set.signal_begin_callback
|
// The possible declarative connection is done, and nothing else is connected
|
||||||
&& !qt_signal_spy_callback_set.signal_end_callback
|
if (qt_signal_spy_callback_set.signal_begin_callback != nullptr)
|
||||||
&& !Q_TRACE_ENABLED(QMetaObject_activate_begin_signal)
|
qt_signal_spy_callback_set.signal_begin_callback(sender, signal_index, argv);
|
||||||
&& !Q_TRACE_ENABLED(QMetaObject_activate_end_signal)) {
|
Q_TRACE(QMetaObject_activate_begin_signal, sender, signal_index);
|
||||||
// The possible declarative connection is done, and nothing else is connected, so:
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3711,13 +3713,6 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i
|
|||||||
QObjectConnectionListVector *operator->() const { return connectionLists; }
|
QObjectConnectionListVector *operator->() const { return connectionLists; }
|
||||||
};
|
};
|
||||||
ConnectionListsRef connectionLists = sender->d_func()->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;
|
const QObjectPrivate::ConnectionList *list;
|
||||||
if (signal_index < connectionLists->count())
|
if (signal_index < connectionLists->count())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user