Typo: priorty -> priority
[babeltrace.git] / python-plugin-provider / python-plugin-provider.c
index c276aadff3bd31989e19bc0873faba6624a051a4..9044d8a23f1ed373e1eb343438710e30d0caf637 100644 (file)
  * SOFTWARE.
  */
 
-#define BT_LOG_OUTPUT_LEVEL python_plugin_provider_log_level
 #define BT_LOG_TAG "PLUGIN-PY"
-#include <babeltrace/logging-internal.h>
-
-/*
- * Must be before the rest because some of the headers below could
- * contain logging statements which need this symbol when expanded.
- */
-static int python_plugin_provider_log_level = BT_LOG_NONE;
+#include "logging.h"
 
 #include <babeltrace/babeltrace-internal.h>
 #include <babeltrace/compiler-internal.h>
@@ -64,13 +57,7 @@ enum python_state {
 } python_state = PYTHON_STATE_NOT_INITED;
 
 static PyObject *py_try_load_plugin_module_func = NULL;
-
-static
-void __attribute__((constructor)) logging_ctor(void)
-{
-       python_plugin_provider_log_level =
-               bt_log_get_level_from_env("BABELTRACE_PYTHON_PLUGIN_PROVIDER_LOG_LEVEL");
-}
+static bool python_was_initialized_by_us;
 
 static
 void print_python_traceback_warn(void)
@@ -94,7 +81,9 @@ void init_python(void)
 {
        PyObject *py_bt2_py_plugin_mod = NULL;
        const char *dis_python_env;
+#ifndef __MINGW32__
        sighandler_t old_sigint = signal(SIGINT, SIG_DFL);
+#endif
 
        if (python_state != PYTHON_STATE_NOT_INITED) {
                goto end;
@@ -113,9 +102,14 @@ void init_python(void)
        }
 
        if (!Py_IsInitialized()) {
+               BT_LOGI_STR("Python interpreter is not initialized: initializing Python interpreter.");
                Py_InitializeEx(0);
+               python_was_initialized_by_us = true;
                BT_LOGI("Initialized Python interpreter: version=\"%s\"",
                        Py_GetVersion());
+       } else {
+               BT_LOGI("Python interpreter is already initialized: version=\"%s\"",
+                       Py_GetVersion());
        }
 
        py_bt2_py_plugin_mod = PyImport_ImportModule("bt2.py_plugin");
@@ -136,9 +130,11 @@ void init_python(void)
        python_state = PYTHON_STATE_FULLY_INITIALIZED;
 
 end:
+#ifndef __MINGW32__
        if (old_sigint != SIG_ERR) {
                (void) signal(SIGINT, old_sigint);
        }
+#endif
 
        print_python_traceback_warn();
        pyerr_clear();
@@ -148,7 +144,7 @@ end:
 
 __attribute__((destructor)) static
 void fini_python(void) {
-       if (Py_IsInitialized()) {
+       if (Py_IsInitialized() && python_was_initialized_by_us) {
                if (py_try_load_plugin_module_func) {
                        Py_DECREF(py_try_load_plugin_module_func);
                        py_try_load_plugin_module_func = NULL;
This page took 0.024441 seconds and 4 git commands to generate.