Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* PySide/Signal manager: Fix corruption when connecting to temporary objectFriedemann Kleint2025-04-171-0/+1
| | | | | | | | | | | | | Guard the deletion tracker listening on QObject::destroyed() using GIL. Amends 33bd61d13d8d9e3794b6049891be62f3351313d9. Fixes: PYSIDE-3072 Task-number: PYSIDE-2810 Task-number: PYSIDE-2221 Pick-to: 6.9 6.8 Change-Id: Ia085fa551903dd39c7a9624f6995d8720e9f7fb0 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* PySide6: Port to Qt include styleFriedemann Kleint2025-03-271-5/+5
| | | | | | | | | Replace the Qt forwarding headers by the .h files. This brings down the dependency list by approx 6%. Pick-to: 6.9 Change-Id: Iae7640ccbdf6a8be68137922d4191522d914d790 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Move helper function isCompiledMethod() to libshibokenFriedemann Kleint2025-03-201-1/+2
| | | | | | | Pick-to: 6.9 Task-number: PYSIDE-2916 Change-Id: I6e72977bfcf95c3c28cc160e07febb84220fa505 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Fix error handling in non-slot connection receiversFriedemann Kleint2024-10-211-0/+8
| | | | | | | | | | | | | | | Extract the error handling code which existed duplicated in GlobalReceiverV2::qt_metacall() and SignalManagerPrivate::handleMetaCallError() as a static helper of SignalManager and call that from the DynamicSlot functions. Amends 33bd61d13d8d9e3794b6049891be62f3351313d9. Pick-to: 6.8 6.8.0 Task-number: PYSIDE-2810 Fixes: PYSIDE-2900 Change-Id: Ife9f156e6752dde7002218d36d369ba68ad595b0 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix disconnecting from C functions (qobject_connect_notify_test flakyness)Friedemann Kleint2024-10-091-3/+10
| | | | | | | | | | | | | | | | | | | Callables wrapping C-function and their objects (as returned by "qobject.deleteLater()") may be temporary objects like methods. For the connection cache key, use self and the actual C-function as so that a disconnect succeeds. This did not show in the old design since the disconnect code did expensive checks to retrieve the slot index of the function and used the index code path. Amends 33bd61d13d8d9e3794b6049891be62f3351313d9. Pick-to: 6.8 Task-number: PYSIDE-2810 Task-number: PYSIDE-2221 Change-Id: Ic33af0d5da60589df16ca35c17824da592910a4d Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Work around deprecation of PyWeakref_GetObject() in Python 3.13Friedemann Kleint2024-09-111-1/+1
| | | | | | | | Add a helper function checking on a weak reference. Task-number: PYSIDE-2751 Change-Id: I4f2d505636a24df083b0d2f4d3d312fcc44d125e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libpyside: Reimplement signal connections for Python callables not targeting ↵Friedemann Kleint2024-08-211-29/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | a QMetaMethod The code previously used a instances of class GlobalReceiverV2 inheriting QObject in a hash in SignalManager per slot tracking the list of senders to be able to use standard signal/slot connections in Qt. This was a complicated data structure and had issues with cleanups. This has been replaced by using an invoker object based on QtPrivate::QSlotObjectBase which can be passed to QObjectPrivate::connect(const QObject *, int signal, QtPrivate::QSlotObjectBase *, ...). The connections (identified by ConnectionKey) are now stored in a hash with QMetaObject::Connection as value, which can be used to disconnect using QObject::disconnect(QMetaObject::Connection). Deletion tracking is done by using signal QObject::destroyed(QObject*) which requires adapting some tests checking on the connection count and weak ref notification on receivers as was the case before. [ChangeLog][PySide6] Signal connections for Python callables not targeting a QMetaMethod has be reimplemented to simplify code and prepare for removal of the GIL. Task-number: PYSIDE-2810 Task-number: PYSIDE-2221 Change-Id: Ib55e73d4d7bfe6d7a8b7adc3ce3734eac5789bea Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libpyside: Split DynamicSlotDataV2 into separate classesFriedemann Kleint2024-07-111-0/+220
DynamicSlotDataV2 provided the callable for the slot invocation and contained switches depending on whether the callable was a method or a plain callable. Turn it into a virtual base class providing a call() method and a factory to cleanly separate the code paths for method and plain callables. Introduce an enumeration of slot types for clarity. Expose it in globalreceiverv2.h so that it can be used for PySideQSlotObject. Task-number: PYSIDE-2810 Change-Id: I4bdfb58a430c39aba2cc531c28129f71ebeb498c Reviewed-by: Christian Tismer <tismer@stackless.com>