X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=module_sigrokdecode.c;h=39b5b4392e479a5dfde3fa2985002b50f0e2384c;hp=17563c1d85d4571e362b5b71a3c5868a36d8c488;hb=039b0db244e2e592a581a6c9b79a934bde136569;hpb=201a85a8ea071d37f4fda2668c0a1c488d852f4e diff --git a/module_sigrokdecode.c b/module_sigrokdecode.c index 17563c1..39b5b43 100644 --- a/module_sigrokdecode.c +++ b/module_sigrokdecode.c @@ -23,8 +23,6 @@ /** @cond PRIVATE */ -SRD_PRIV PyObject *srd_logic_type = NULL; - /* * When initialized, a reference to this module inside the Python interpreter * lives here. @@ -43,7 +41,10 @@ static struct PyModuleDef sigrokdecode_module = { /** @cond PRIVATE */ PyMODINIT_FUNC PyInit_sigrokdecode(void) { - PyObject *mod, *Decoder_type, *logic_type; + PyObject *mod, *Decoder_type; + PyGILState_STATE gstate; + + gstate = PyGILState_Ensure(); mod = PyModule_Create(&sigrokdecode_module); if (!mod) @@ -55,12 +56,6 @@ PyMODINIT_FUNC PyInit_sigrokdecode(void) if (PyModule_AddObject(mod, "Decoder", Decoder_type) < 0) goto err_out; - logic_type = srd_logic_type_new(); - if (!logic_type) - goto err_out; - if (PyModule_AddObject(mod, "srd_logic", logic_type) < 0) - goto err_out; - /* Expose output types as symbols in the sigrokdecode module */ if (PyModule_AddIntConstant(mod, "OUTPUT_ANN", SRD_OUTPUT_ANN) < 0) goto err_out; @@ -74,14 +69,18 @@ PyMODINIT_FUNC PyInit_sigrokdecode(void) if (PyModule_AddIntConstant(mod, "SRD_CONF_SAMPLERATE", SRD_CONF_SAMPLERATE) < 0) goto err_out; - srd_logic_type = logic_type; 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; } + /** @endcond */