diff options
| author | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2023-02-23 09:09:50 +0100 |
|---|---|---|
| committer | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2023-02-27 14:39:19 +0100 |
| commit | 5fac301e8e5a8d15eaff91d78b5deeeb2204c7b4 (patch) | |
| tree | 29a1b8c7ff7ae1c25f9d0661f47f06811c77660b /sources/pyside6/PySide6 | |
| parent | 78b924368cc4c82a0cb6b0837f00dcf097d24223 (diff) | |
PySide: Add QRunnable create()
Fixes: PYSIDE-2234
Change-Id: I3fc1c669c3985a8aad57785927fb4e48e69431a4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/PySide6')
| -rw-r--r-- | sources/pyside6/PySide6/QtCore/typesystem_core_common.xml | 3 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtcore.cpp | 17 |
2 files changed, 20 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index b9c35bfe6..8a90a3fa9 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -3234,6 +3234,9 @@ <object-type name="QFactoryInterface"/> <object-type name="QRunnable"> <configuration condition="QT_CONFIG(thread)"/> + <add-function signature="create(PyObject* @functionToRun@)" static="yes" return-type="QRunnable*"> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qrunnable_create"/> + </add-function> </object-type> <object-type name="QPluginLoader"/> diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index 1f9278c4b..9e7d6ad6e 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -1767,3 +1767,20 @@ const auto index = mo->indexOfSignal(signature.constData()); const auto result = index != -1 ? mo->method(index) : QMetaMethod{}; %PYARG_0 = %CONVERTTOPYTHON[QMetaMethod](result); // @snippet qmetamethod-from-signal + +// @snippet qrunnable_create +auto callable = %PYARG_1; +auto callback = [callable]() -> void +{ + if (!PyCallable_Check(callable)) { + qWarning("Argument 1 of %FUNCTION_NAME must be a callable."); + return; + } + Shiboken::GilState state; + PyObject_CallObject(callable, nullptr); + Py_DECREF(callable); +}; +Py_INCREF(callable); +%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(callback); +%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0); +// @snipped qrunnable_create |
