From e5eaae100b35d97f22a388831a5b9cd712053f3f Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Fri, 26 Apr 2019 15:16:18 +0200 Subject: Refactor QMetaObject::activate tracepoints Use Q_TRACE_SCOPE and the corresponding naming scheme. Additionally, don't change the behavior of the code when tracing is enabled, i.e. continue to return early if possible. Change-Id: I9ba9679869db1541a19bc832beede902224c52f2 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qobject.cpp | 34 +++++++++++++++++----------------- src/corelib/qtcore.tracepoints | 16 ++++++++-------- 2 files changed, 25 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 2a05f7f383..68c5460b6a 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3664,19 +3664,18 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i if (sender->d_func()->blockSig) return; + Q_TRACE_SCOPE(QMetaObject_activate, sender, signal_index); + if (sender->d_func()->isDeclarativeSignalConnected(signal_index) && QAbstractDeclarativeData::signalEmitted) { - Q_TRACE(QMetaObject_activate_begin_declarative_signal, sender, signal_index); + Q_TRACE_SCOPE(QMetaObject_activate_declarative_signal, sender, signal_index); QAbstractDeclarativeData::signalEmitted(sender->d_func()->declarativeData, sender, signal_index, argv); - 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)) { + && !qt_signal_spy_callback_set.signal_end_callback) { // The possible declarative connection is done, and nothing else is connected, so: return; } @@ -3686,7 +3685,6 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i qt_signal_spy_callback_set.signal_begin_callback(sender, signal_index, argv ? argv : empty_argv); } - Q_TRACE(QMetaObject_activate_begin_signal, sender, signal_index); { QMutexLocker locker(signalSlotLock(sender)); @@ -3717,7 +3715,6 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i 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; } @@ -3778,9 +3775,11 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i c->slotObj->ref(); QScopedPointer obj(c->slotObj); locker.unlock(); - Q_TRACE(QMetaObject_activate_begin_slot_functor, obj.data()); - obj->call(receiver, argv ? argv : empty_argv); - Q_TRACE(QMetaObject_activate_end_slot_functor, obj.data()); + + { + Q_TRACE_SCOPE(QMetaObject_activate_slot_functor, obj.data()); + obj->call(receiver, argv ? argv : empty_argv); + } // Make sure the slot object gets destroyed before the mutex is locked again, as the // destructor of the slot object might also lock a mutex from the signalSlotLock() mutex pool, @@ -3796,11 +3795,12 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i locker.unlock(); if (qt_signal_spy_callback_set.slot_begin_callback != 0) qt_signal_spy_callback_set.slot_begin_callback(receiver, methodIndex, argv ? argv : empty_argv); - Q_TRACE(QMetaObject_activate_begin_slot, receiver, methodIndex); - callFunction(receiver, QMetaObject::InvokeMetaMethod, method_relative, argv ? argv : empty_argv); + { + Q_TRACE_SCOPE(QMetaObject_activate_slot, receiver, methodIndex); + callFunction(receiver, QMetaObject::InvokeMetaMethod, method_relative, argv ? argv : empty_argv); + } - Q_TRACE(QMetaObject_activate_end_slot, receiver, methodIndex); if (qt_signal_spy_callback_set.slot_end_callback != 0) qt_signal_spy_callback_set.slot_end_callback(receiver, methodIndex); locker.relock(); @@ -3813,11 +3813,12 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i method, argv ? argv : empty_argv); } - Q_TRACE(QMetaObject_activate_begin_slot, receiver, method); - metacall(receiver, QMetaObject::InvokeMetaMethod, method, argv ? argv : empty_argv); + { + Q_TRACE_SCOPE(QMetaObject_activate_slot, receiver, method); + metacall(receiver, QMetaObject::InvokeMetaMethod, method, argv ? argv : empty_argv); + } - Q_TRACE(QMetaObject_activate_end_slot, receiver, method); if (qt_signal_spy_callback_set.slot_end_callback != 0) qt_signal_spy_callback_set.slot_end_callback(receiver, method); @@ -3838,7 +3839,6 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i 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); } /*! diff --git a/src/corelib/qtcore.tracepoints b/src/corelib/qtcore.tracepoints index 3a70136741..7078950027 100644 --- a/src/corelib/qtcore.tracepoints +++ b/src/corelib/qtcore.tracepoints @@ -32,13 +32,13 @@ QCoreApplication_notify_after_delivery(QObject *receiver, QEvent *event, int typ QObject_ctor(QObject *object) QObject_dtor(QObject *object) -QMetaObject_activate_begin_signal(QObject *sender, int signalIndex) -QMetaObject_activate_end_signal(QObject *sender, int signalIndex) -QMetaObject_activate_begin_slot(QObject *receiver, int slotIndex) -QMetaObject_activate_end_slot(QObject *receiver, int slotIndex) -QMetaObject_activate_begin_slot_functor(void *slotObject) -QMetaObject_activate_end_slot_functor(void *slotObject) -QMetaObject_activate_begin_declarative_signal(QObject *sender, int signalIndex) -QMetaObject_activate_end_declarative_signal(QObject *sender, int signalIndex) +QMetaObject_activate_entry(QObject *sender, int signalIndex) +QMetaObject_activate_exit(QObject *sender, int signalIndex) +QMetaObject_activate_slot_entry(QObject *receiver, int slotIndex) +QMetaObject_activate_slot_exit(QObject *receiver, int slotIndex) +QMetaObject_activate_slot_functor_entry(void *slotObject) +QMetaObject_activate_slot_functor_exit(void *slotObject) +QMetaObject_activate_declarative_signal_entry(QObject *sender, int signalIndex) +QMetaObject_activate_declarative_signal_exit(QObject *sender, int signalIndex) qt_message_print(int type, const char *category, const char *function, const char *file, int line, const QString &message) -- cgit v1.2.3