diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-07-21 16:13:00 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-27 22:40:47 +0000 |
commit | 208c0bc5987f84c3bb67654b00c00caabfe4a0c2 (patch) | |
tree | 574c6eb8157eea3e61e77285c1535e653f2efdea | |
parent | eaca39813d0777f0c0c052732275e562a73c0f71 (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.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( |