aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal_p.h
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-12-13 14:27:38 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-12-16 18:03:42 +0000
commitbfb7fd1c68e9a8a62b09ad7e493b040aa8e5bad8 (patch)
treeb00ec92155ef27ab35388689c1b6e11f18f12293 /sources/pyside6/libpyside/pysidesignal_p.h
parent46738f20fec0e53aa549895b29c91b0c53581c75 (diff)
libpyside/ PySideSignal: Reduce number of weakref handlers for sender tracking
Introduce a struct shared by shared_ptr in all instances of PySideSignalInstancePrivate that is tracked by the weak reference. Amends db40e3e07932576bc54cd922eecd423c0f675613 Task-number: PYSIDE-2201 Task-number: PYSIDE-79 Change-Id: Ic7bb836422f3843a02474f2bb92641b8a9ebc824 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com> (cherry picked from commit e226b5827c110d16c9d3b3f1b8d62b1c3a6e8605) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal_p.h')
-rw-r--r--sources/pyside6/libpyside/pysidesignal_p.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal_p.h b/sources/pyside6/libpyside/pysidesignal_p.h
index 55a9a7a70..259da0f34 100644
--- a/sources/pyside6/libpyside/pysidesignal_p.h
+++ b/sources/pyside6/libpyside/pysidesignal_p.h
@@ -9,6 +9,8 @@
#include <QtCore/QByteArray>
#include <QtCore/QList>
+#include <memory>
+
struct PySideSignalData
{
struct Signature
@@ -36,11 +38,19 @@ extern "C"
struct PySideSignalInstance;
}; //extern "C"
+struct PySideSignalInstanceShared
+{
+ PyObject *source = nullptr;
+ bool deleted = false;
+};
+
+using PySideSignalInstanceSharedPtr = std::shared_ptr<PySideSignalInstanceShared>;
+
struct PySideSignalInstancePrivate
{
QByteArray signalName;
QByteArray signature;
- PyObject *source = nullptr;
+ PySideSignalInstanceSharedPtr shared;
PyObject *homonymousMethod = nullptr;
PySideSignalInstance *next = nullptr;
unsigned short attributes = 0;