Browse Source

panda: Remove PyEval_InitThreads calls when compiling against Python 3.9+

Closes #1053
Daniel 5 years ago
parent
commit
54cb519dc9

+ 3 - 3
panda/src/event/pythonTask.cxx

@@ -71,12 +71,12 @@ PythonTask(PyObject *func_or_coro, const std::string &name) :
 
 
   __dict__ = PyDict_New();
   __dict__ = PyDict_New();
 
 
-#ifndef SIMPLE_THREADS
+#if !defined(SIMPLE_THREADS) && defined(WITH_THREAD) && PY_VERSION_HEX < 0x03090000
   // Ensure that the Python threading system is initialized and ready to go.
   // Ensure that the Python threading system is initialized and ready to go.
-#ifdef WITH_THREAD  // This symbol defined within Python.h
+  // WITH_THREAD symbol defined within Python.h
+  // PyEval_InitThreads is now a deprecated no-op in Python 3.9+
   PyEval_InitThreads();
   PyEval_InitThreads();
 #endif
 #endif
-#endif
 }
 }
 
 
 /**
 /**

+ 3 - 3
panda/src/pipeline/pythonThread.cxx

@@ -38,12 +38,12 @@ PythonThread(PyObject *function, PyObject *args,
 
 
   set_args(args);
   set_args(args);
 
 
-#ifndef SIMPLE_THREADS
+#if !defined(SIMPLE_THREADS) && defined(WITH_THREAD) && PY_VERSION_HEX < 0x03090000
   // Ensure that the Python threading system is initialized and ready to go.
   // Ensure that the Python threading system is initialized and ready to go.
-#ifdef WITH_THREAD  // This symbol defined within Python.h
+  // WITH_THREAD symbol defined within Python.h
+  // PyEval_InitThreads is now a deprecated no-op in Python 3.9+
   PyEval_InitThreads();
   PyEval_InitThreads();
 #endif
 #endif
-#endif
 }
 }
 
 
 /**
 /**

+ 6 - 5
panda/src/putil/pythonCallbackObject.cxx

@@ -41,15 +41,16 @@ PythonCallbackObject(PyObject *function) {
 
 
   set_function(function);
   set_function(function);
 
 
-#ifndef SIMPLE_THREADS
+#if !defined(SIMPLE_THREADS) && defined(WITH_THREAD)
   // Ensure that the Python threading system is initialized and ready to go.
   // Ensure that the Python threading system is initialized and ready to go.
-#ifdef WITH_THREAD  // This symbol defined within Python.h
-
+  // WITH_THREAD symbol defined within Python.h
   Py_Initialize();
   Py_Initialize();
 
 
+#if PY_VERSION_HEX < 0x03090000
+  // PyEval_InitThreads is now a deprecated no-op in Python 3.9+
   PyEval_InitThreads();
   PyEval_InitThreads();
-#endif
-#endif
+#endif // PY_VERSION_HEX
+#endif // WITH_THREAD
 }
 }
 
 
 /**
 /**