Add a CFP decoder.
[libsigrokdecode.git] / module_sigrokdecode.c
index 17563c1d85d4571e362b5b71a3c5868a36d8c488..39b5b4392e479a5dfde3fa2985002b50f0e2384c 100644 (file)
@@ -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 */