diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-12-13 14:27:38 +0100 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-12-16 18:03:42 +0000 |
| commit | bfb7fd1c68e9a8a62b09ad7e493b040aa8e5bad8 (patch) | |
| tree | b00ec92155ef27ab35388689c1b6e11f18f12293 /sources/pyside6/libpyside/pysidesignal_p.h | |
| parent | 46738f20fec0e53aa549895b29c91b0c53581c75 (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.h | 12 |
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; |
