diff options
author | Friedemann Kleint <[email protected]> | 2025-05-13 10:14:40 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2025-05-13 22:30:29 +0200 |
commit | aecf087dead4855c09c3fe5aedcabc9678fdd2e6 (patch) | |
tree | 8a2c4c4629cf4bd748793512b07a34568ed12dc5 | |
parent | 0acf51e178db93a235be6cfb0f08c1c3138e924d (diff) |
libpyside: Make PyObjectWrapper movable
This is required by today's QVariant conversion code.
Task-number: PYSIDE-2193
Pick-to: 6.9
Change-Id: I66efcfb797653fe1d617f1f0027fd60ec95e8a79
Reviewed-by: Shyamnath Premnadh <[email protected]>
-rw-r--r-- | sources/pyside6/libpyside/signalmanager.cpp | 12 | ||||
-rw-r--r-- | sources/pyside6/libpyside/signalmanager.h | 4 |
2 files changed, 14 insertions, 2 deletions
diff --git a/sources/pyside6/libpyside/signalmanager.cpp b/sources/pyside6/libpyside/signalmanager.cpp index 933edd318..e5f069c86 100644 --- a/sources/pyside6/libpyside/signalmanager.cpp +++ b/sources/pyside6/libpyside/signalmanager.cpp @@ -27,6 +27,7 @@ #include <QtCore/qscopedpointer.h> #include <memory> +#include <utility> using namespace Qt::StringLiterals; @@ -125,6 +126,17 @@ PyObjectWrapper::PyObjectWrapper(const PyObjectWrapper &other) Py_XINCREF(m_me); } +PyObjectWrapper::PyObjectWrapper(PyObjectWrapper &&other) noexcept + : m_me{std::exchange(other.m_me, nullptr)} +{ +} + +PyObjectWrapper &PyObjectWrapper::operator=(PyObjectWrapper &&other) noexcept +{ + m_me = std::exchange(other.m_me, nullptr); + return *this; +} + PyObjectWrapper::~PyObjectWrapper() { // Check that Python is still initialized as sometimes this is called by a static destructor diff --git a/sources/pyside6/libpyside/signalmanager.h b/sources/pyside6/libpyside/signalmanager.h index d5c007dbe..52bb5f1d1 100644 --- a/sources/pyside6/libpyside/signalmanager.h +++ b/sources/pyside6/libpyside/signalmanager.h @@ -22,13 +22,13 @@ namespace PySide class PYSIDE_API PyObjectWrapper { public: - PyObjectWrapper(PyObjectWrapper&&) = delete; - PyObjectWrapper& operator=(PyObjectWrapper &&) = delete; PyObjectWrapper(); explicit PyObjectWrapper(PyObject* me); PyObjectWrapper(const PyObjectWrapper &other); PyObjectWrapper& operator=(const PyObjectWrapper &other); + PyObjectWrapper(PyObjectWrapper&&) noexcept; + PyObjectWrapper &operator=(PyObjectWrapper &&) noexcept; void reset(PyObject *o); |