aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-07-21 16:13:00 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-27 22:40:47 +0000
commit208c0bc5987f84c3bb67654b00c00caabfe4a0c2 (patch)
tree574c6eb8157eea3e61e77285c1535e653f2efdea
parenteaca39813d0777f0c0c052732275e562a73c0f71 (diff)
PySide6: Fix crash with qmlRegisterSingletonType() when invoked from JavaScript
Acquire the GIL in the callback to ensure Python is ready. Amends 0864de0b26888a795808faa234d9717066e821b5. Fixes: PYSIDE-1629 Task-number: PYSIDE-574 Change-Id: Ie6524b39c12f1f27c427e8423dfd2190a48c1353 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 8535659567b500a3055cd1ddfe9c16f8122a8738) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
index ab098c119..852a15e21 100644
--- a/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
+++ b/sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp
@@ -212,6 +212,7 @@ int PySide::qmlRegisterSingletonType(PyObject *pyObj, const char *uri, int versi
type.qObjectApi =
[callback, pyObj, hasCallback](QQmlEngine *engine, QJSEngine *) -> QObject * {
+ Shiboken::GilState gil;
AutoDecRef args(PyTuple_New(hasCallback ? 1 : 0));
if (hasCallback) {
@@ -242,6 +243,7 @@ int PySide::qmlRegisterSingletonType(PyObject *pyObj, const char *uri, int versi
} else {
type.scriptApi =
[callback](QQmlEngine *engine, QJSEngine *) -> QJSValue {
+ Shiboken::GilState gil;
AutoDecRef args(PyTuple_New(1));
PyTuple_SET_ITEM(args, 0, Conversions::pointerToPython(