diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-07-08 14:31:21 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-07-29 08:45:29 +0200 |
commit | 51df6eb4c0a1b02cc476d1fe5a7f9f30cb60e600 (patch) | |
tree | b0b03348da6a84463b05773cc9a99fc0649e6fc1 /sources/pyside6/libpyside | |
parent | 843909f0215fa0ef0a6b41db380d3aae09b25b7f (diff) |
libpyside: Use the new DynamicSlot in PySideQSlotObject
Task-number: PYSIDE-2810
Change-Id: I51bd24520cc9fd420ee8256f1278bb17cd406235
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/libpyside')
-rw-r--r-- | sources/pyside6/libpyside/pysideqslotobject_p.cpp | 14 | ||||
-rw-r--r-- | sources/pyside6/libpyside/pysideqslotobject_p.h | 7 |
2 files changed, 11 insertions, 10 deletions
diff --git a/sources/pyside6/libpyside/pysideqslotobject_p.cpp b/sources/pyside6/libpyside/pysideqslotobject_p.cpp index 40b011fcf..279a3d4e0 100644 --- a/sources/pyside6/libpyside/pysideqslotobject_p.cpp +++ b/sources/pyside6/libpyside/pysideqslotobject_p.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "pysideqslotobject_p.h" -#include "signalmanager.h" +#include "dynamicslot_p.h" #include <gilstate.h> @@ -13,23 +13,19 @@ PySideQSlotObject::PySideQSlotObject(PyObject *callable, const QByteArrayList ¶meterTypes, const char *returnType) : QtPrivate::QSlotObjectBase(&impl), - m_callable(callable), + m_dynamicSlot(DynamicSlot::create(callable)), m_parameterTypes(parameterTypes), m_returnType(returnType) { - Py_INCREF(callable); } -PySideQSlotObject::~PySideQSlotObject() +void PySideQSlotObject::call(void **args) { Shiboken::GilState state; - Py_DECREF(m_callable); + m_dynamicSlot->call(m_parameterTypes, m_returnType, args); } -void PySideQSlotObject::call(void **args) -{ - SignalManager::callPythonMetaMethod(m_parameterTypes, m_returnType, args, m_callable); -} +PySideQSlotObject::~PySideQSlotObject() = default; void PySideQSlotObject::impl(int which, QSlotObjectBase *this_, QObject *receiver, void **args, bool *ret) diff --git a/sources/pyside6/libpyside/pysideqslotobject_p.h b/sources/pyside6/libpyside/pysideqslotobject_p.h index 827f0193c..875369c27 100644 --- a/sources/pyside6/libpyside/pysideqslotobject_p.h +++ b/sources/pyside6/libpyside/pysideqslotobject_p.h @@ -10,11 +10,16 @@ #include <QtCore/QObject> #include <QtCore/qobjectdefs.h> +#include <memory> + namespace PySide { +class DynamicSlot; + class PySideQSlotObject : public QtPrivate::QSlotObjectBase { + Q_DISABLE_COPY_MOVE(PySideQSlotObject) public: explicit PySideQSlotObject(PyObject *callable, const QByteArrayList ¶meterTypes, const char *returnType = nullptr); @@ -24,7 +29,7 @@ private: static void impl(int which, QSlotObjectBase *this_, QObject *receiver, void **args, bool *ret); void call(void **args); - PyObject *m_callable; + std::unique_ptr<DynamicSlot> m_dynamicSlot; const QByteArrayList m_parameterTypes; const char *m_returnType; }; |