diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-07-21 16:13:00 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-07-27 21:53:34 +0200 |
commit | 8535659567b500a3055cd1ddfe9c16f8122a8738 (patch) | |
tree | 5a36d0b5972480417cd5c866f252b727486863a6 /sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | |
parent | dcfbb326e431de1e710385a8126b4a2739e2e921 (diff) |
PySide6: Fix crash with qmlRegisterSingletonType() when invoked from JavaScript
Acquire the GIL in the callback to ensure Python is ready.
Amends 0864de0b26888a795808faa234d9717066e821b5.
Pick-to: 6.1
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>
Diffstat (limited to 'sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp')
-rw-r--r-- | sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | 2 |
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( |