diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-06-26 10:52:47 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-06-27 16:00:33 +0000 |
commit | 7222d8a0470eaa254128b3207a2c295025dd1819 (patch) | |
tree | 705178e12da47fd61178563e8ee1752e74ec7b3d | |
parent | 65f1e91dc486a2e5a561805db19122f14a60dbe4 (diff) |
PySide6: Add debug operators for DynamicSlotDataV2/GlobalReceiverV2
Task-number: PYSIDE-2371
Task-number: PYSIDE-2299
Change-Id: I1d3edf539e156a3a64f9e4b4499bc967b0da2ade
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
(cherry picked from commit f0109334c3087740252f55e75dd3d010d951c274)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | sources/pyside6/libpyside/globalreceiverv2.cpp | 54 | ||||
-rw-r--r-- | sources/pyside6/libpyside/globalreceiverv2.h | 6 |
2 files changed, 60 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/globalreceiverv2.cpp b/sources/pyside6/libpyside/globalreceiverv2.cpp index 8289eaff6..301d7c535 100644 --- a/sources/pyside6/libpyside/globalreceiverv2.cpp +++ b/sources/pyside6/libpyside/globalreceiverv2.cpp @@ -13,6 +13,7 @@ #include <QtCore/qhashfunctions.h> #include <QtCore/QMetaMethod> #include <QtCore/QSet> +#include <QtCore/QDebug> #include <cstring> @@ -46,6 +47,8 @@ class DynamicSlotDataV2 static void onCallbackDestroyed(void *data); static GlobalReceiverKey key(PyObject *callback); + void formatDebug(QDebug &debug) const; + private: bool m_isMethod; PyObject *m_callback; @@ -56,6 +59,32 @@ class DynamicSlotDataV2 GlobalReceiverV2 *m_parent; }; +void DynamicSlotDataV2::formatDebug(QDebug &debug) const +{ + debug << "method=" << m_isMethod << ", m_callback=" << m_callback; + if (m_callback != nullptr) + debug << '/' << Py_TYPE(m_callback)->tp_name; + debug << ", self=" << m_pythonSelf; + if (m_pythonSelf != nullptr) + debug << '/' << Py_TYPE(m_pythonSelf)->tp_name; + debug << ", m_pyClass=" << m_pyClass; + if (m_pyClass != nullptr) + debug << '/' << Py_TYPE(m_pyClass)->tp_name; + debug << ", signatures=" << m_signatures.keys(); +} + +QDebug operator<<(QDebug debug, const DynamicSlotDataV2 *d) +{ + QDebugStateSaver saver(debug); + debug.noquote(); + debug.nospace(); + debug << "DynamicSlotDataV2("; + if (d) + d->formatDebug(debug); + else + debug << '0'; + debug << ')'; + return debug; } using namespace PySide; @@ -275,3 +304,28 @@ int GlobalReceiverV2::qt_metacall(QMetaObject::Call call, int id, void **args) return -1; } + +void GlobalReceiverV2::formatDebug(QDebug &debug) const +{ + debug << "receiver=" << m_receiver << ", slot=" << m_data; + if (isEmpty()) + debug << ", empty"; + else + debug << ", refs=" << m_refs; +}; + +QDebug operator<<(QDebug debug, const GlobalReceiverV2 *g) +{ + QDebugStateSaver saver(debug); + debug.noquote(); + debug.nospace(); + debug << "GlobalReceiverV2("; + if (g) + g->formatDebug(debug); + else + debug << '0'; + debug << ')'; + return debug; +} + +} // namespace PySide diff --git a/sources/pyside6/libpyside/globalreceiverv2.h b/sources/pyside6/libpyside/globalreceiverv2.h index c44b8a12f..256c798ef 100644 --- a/sources/pyside6/libpyside/globalreceiverv2.h +++ b/sources/pyside6/libpyside/globalreceiverv2.h @@ -15,6 +15,8 @@ #include <memory> +QT_FORWARD_DECLARE_CLASS(QDebug); + namespace PySide { @@ -91,6 +93,8 @@ public: static const char *senderDynamicProperty; + void formatDebug(QDebug &debug) const; + private: void purgeDeletedSenders(); @@ -101,6 +105,8 @@ private: QPointer<QObject> m_receiver; }; +QDebug operator<<(QDebug debug, const GlobalReceiverV2 *g); + } #endif |