Browse Source

panda: Remove PyEval_InitThreads calls when compiling against Python 3.9+

Cherry-pick from #1053
Daniel 5 years ago
parent
commit
4f63ef635d

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

@@ -72,12 +72,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
 }
 }
 
 
 /**
 /**

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

@@ -41,17 +41,18 @@ 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
 
 
 #if PY_VERSION_HEX >= 0x03020000
 #if PY_VERSION_HEX >= 0x03020000
   Py_Initialize();
   Py_Initialize();
 #endif
 #endif
 
 
+#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
 }
 }
 
 
 /**
 /**