diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2018-06-18 17:54:49 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2018-09-25 21:22:47 +0000 |
commit | 42c545faf7873dc7f3f9447441d648a4451d35ef (patch) | |
tree | 74373795eecdc0276af362727b718269494518ab /src/corelib | |
parent | 80406d2c2577f7973d1a3ef10e23826c48970239 (diff) |
Tracepoints: trace signal activation
Change-Id: I1ef8074178386166157d9b3416fd432014585857
Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 16 | ||||
-rw-r--r-- | src/corelib/qtcore.tracepoints | 9 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 6254330d25..3cb8c45b41 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3652,13 +3652,17 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i if (sender->d_func()->isDeclarativeSignalConnected(signal_index) && QAbstractDeclarativeData::signalEmitted) { + Q_TRACE(QMetaObject_activate_begin_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) { + && !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: return; } @@ -3668,6 +3672,7 @@ 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)); @@ -3698,6 +3703,7 @@ 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; } @@ -3758,7 +3764,9 @@ void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_i c->slotObj->ref(); QScopedPointer<QtPrivate::QSlotObjectBase, QSlotObjectBaseDeleter> 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()); // 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, @@ -3774,9 +3782,11 @@ 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(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(); @@ -3789,9 +3799,11 @@ 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(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); @@ -3812,7 +3824,7 @@ 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 2e78490ab5..33734a4274 100644 --- a/src/corelib/qtcore.tracepoints +++ b/src/corelib/qtcore.tracepoints @@ -23,3 +23,12 @@ 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) |