From 208c0bc5987f84c3bb67654b00c00caabfe4a0c2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 21 Jul 2021 16:13:00 +0200 Subject: 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 Reviewed-by: Qt CI Bot (cherry picked from commit 8535659567b500a3055cd1ddfe9c16f8122a8738) Reviewed-by: Qt Cherry-pick Bot --- sources/pyside6/PySide6/QtQml/pysideqmlregistertype.cpp | 2 ++ 1 file changed, 2 insertions(+) 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( -- cgit v1.2.3