From 7222d8a0470eaa254128b3207a2c295025dd1819 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 26 Jun 2023 10:52:47 +0200 Subject: PySide6: Add debug operators for DynamicSlotDataV2/GlobalReceiverV2 Task-number: PYSIDE-2371 Task-number: PYSIDE-2299 Change-Id: I1d3edf539e156a3a64f9e4b4499bc967b0da2ade Reviewed-by: Shyamnath Premnadh (cherry picked from commit f0109334c3087740252f55e75dd3d010d951c274) Reviewed-by: Qt Cherry-pick Bot --- sources/pyside6/libpyside/globalreceiverv2.cpp | 54 ++++++++++++++++++++++++++ sources/pyside6/libpyside/globalreceiverv2.h | 6 +++ 2 files changed, 60 insertions(+) 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 #include #include +#include #include @@ -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 +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 m_receiver; }; +QDebug operator<<(QDebug debug, const GlobalReceiverV2 *g); + } #endif -- cgit v1.2.3