| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Move the signatures hash from DynamicSlotDataV2 into GlobalReceiverV2
to avoid unnecessary indirections and to enable further refactorings
of DynamicSlotDataV2.
Use QByteArray for the signature parameters, avoiding the conversion.
Task-number: PYSIDE-2810
Change-Id: I17a637e28e9dac4ea159b26a375e8c1535e00814
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
|
| |
|
|
|
|
|
|
|
| |
Task-number: QTBUG-103757
Task-number: PYSIDE-2497
Change-Id: I1b0fd5b1cad908ee612ab33ca0aacffc55947d87
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
| |
|
|
|
|
|
|
|
| |
Use qHashMulti, noexcept and make them inline friends.
As a drive-by, also make comparison for Clang structures noexcept.
Pick-to: 6.6
Change-Id: Ibdcbf3bde90af0fc419bd1640d3f45602f772f9a
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
|
| |
|
|
|
|
|
|
| |
Pick-to: 6.6
Task-number: PYSIDE-2479
Change-Id: I6df19d487be7087f17e37bea3ea30a66e9b24ed7
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
| |
|
|
|
|
|
|
| |
Task-number: PYSIDE-2371
Task-number: PYSIDE-2299
Pick-to: 6.5
Change-Id: I1d3edf539e156a3a64f9e4b4499bc967b0da2ade
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
|
| |
|
|
|
|
| |
Task-number: QTBUG-109570
Change-Id: Ieb13bf352d9b75e364a73bddc464548ec19701ed
Reviewed-by: Christian Tismer <tismer@stackless.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For non-C++ slots routed via GlobalReceiverV2, sender()
of the receiving QObject returns 0. To fix this, store
the sender obtained in GlobalReceiverV2::qt_metacall()
temporarily in a special dynamic property of the receiver
and inject code checking it into QObject::sender(). This
fixes at least the synchronous calls.
Fixes: PYSIDE-2144
Fixes: PYSIDE-1295
Change-Id: Ia111162eb1404914ecfb7f19fadb8a1b63ae8b4a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GlobalReceiverV2 connected to the destroyed() signal of the senders to
keep track of its lifetime, which caused issues with delayed emission
of signals when using threads.
To fix this, change GlobalReceiverV2's sender list to use QPointer,
which automatically tracks the lifetime of the pointees. Move the
deletion of the GlobalReceiverV2 instances into SignalManager,
completely, removing the "delete this" pattern used.
This allows for removing some hacks for the QObject::receivers()
function.
Fixes: PYSIDE-2141
Change-Id: I361256f919dab13bfcf20800624b2454308bbc4b
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
| |
|
|
|
|
|
|
|
|
| |
Use C++ comments to unclutter it and improve the
description.
Task-number: PYSIDE-2141
Pick-to: 6.4 6.2
Change-Id: Iabbf7d49baffe9dd4cb9db6cee4b8fa2c1f4e3fc
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
| |
Replace the current license disclaimer in files by a
SPDX-License-Identifier. Files that have to be modified by hand are
modified. License files are organized under LICENSES directory.
Task-number: QTBUG-67283
Change-Id: I065150015bdb84a3096b5b39c061cf0a20ab637d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use a QHash of object/method PyObject instead of a
QByteArray representing the sum of hash values of both
as a string.
The problem with using hash functions here is that 2 keys
might be identical due to the hashing.
Rename the hash() methods to key().
Task-number: PYSIDE-1422
Change-Id: Ie1344d8bd85a073ef5f6e2cb461bd2f514265a9f
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Christian Tismer <tismer@stackless.com>
|
|
|
Adapt CMake files, build scripts, tests and examples.
Task-number: PYSIDE-904
Change-Id: I845f7b006e9ad274fed5444ec4c1f9dbe176ff88
Reviewed-by: Christian Tismer <tismer@stackless.com>
|