]> sigrok.org Git - libsigrokdecode.git/blobdiff - module_sigrokdecode.c
Acquire/release the Python GIL where needed to avoid threading issues.
[libsigrokdecode.git] / module_sigrokdecode.c
index a0d9610f97f2f415d8956bc2f51fd6fe578a2939..ab5df19e3db27cde47cf1cc943a83ccbd4d51aa6 100644 (file)
@@ -42,6 +42,9 @@ static struct PyModuleDef sigrokdecode_module = {
 PyMODINIT_FUNC PyInit_sigrokdecode(void)
 {
        PyObject *mod, *Decoder_type;
+       PyGILState_STATE gstate;
+
+       gstate = PyGILState_Ensure();
 
        mod = PyModule_Create(&sigrokdecode_module);
        if (!mod)
@@ -68,10 +71,13 @@ PyMODINIT_FUNC PyInit_sigrokdecode(void)
 
        mod_sigrokdecode = mod;
 
+       PyGILState_Release(gstate);
+
        return mod;
 err_out:
        Py_XDECREF(mod);
        srd_exception_catch("Failed to initialize module");
+       PyGILState_Release(gstate);
 
        return NULL;
 }