Blob Blame History Raw
diff --git a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
index 77a109752..f7facb33a 100644
--- a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
+++ b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp
@@ -258,6 +258,13 @@ void PythonContext::GlobalInit()
   PyImport_AppendInittab("renderdoc", &PyInit_renderdoc);
   PyImport_AppendInittab("qrenderdoc", &PyInit_qrenderdoc);
 
+#if PY_VERSION_HEX > 0x030B0000
+  PyConfig config;
+  PyConfig_InitPythonConfig(&config);
+  config.configure_c_stdio = 0;
+  config.parse_argv = 0;
+#endif
+
 #if defined(STATIC_QRENDERDOC)
   // add the location where our libs will be for statically-linked python installs
   {
@@ -267,17 +274,31 @@ void PythonContext::GlobalInit()
 
     pylibs.toWCharArray(python_home);
 
+#if PY_VERSION_HEX > 0x030B0000
+    config.home = python_home;
+#else
     Py_SetPythonHome(python_home);
+#endif
   }
 #endif
 
+#if PY_VERSION_HEX > 0x030B0000
+  config.program_name = program_name;
+
+  config.use_environment = 0;
+
+  Py_InitializeFromConfig(&config);
+#else
   Py_SetProgramName(program_name);
 
   Py_IgnoreEnvironmentFlag = 1;
 
   Py_Initialize();
+#endif
 
+#if PY_VERSION_HEX < 0x03090000
   PyEval_InitThreads();
+#endif
 
   OutputRedirectorType.tp_name = "renderdoc_output_redirector";
   OutputRedirectorType.tp_basicsize = sizeof(OutputRedirector);
diff --git a/qrenderdoc/Code/pyrenderdoc/renderdoc.i b/qrenderdoc/Code/pyrenderdoc/renderdoc.i
index 97da4a1cd..d86762eed 100644
--- a/qrenderdoc/Code/pyrenderdoc/renderdoc.i
+++ b/qrenderdoc/Code/pyrenderdoc/renderdoc.i
@@ -470,9 +470,9 @@ extern "C" PyObject *RENDERDOC_DumpObject(PyObject *obj)
   void *resptr = NULL;
 
   // for basic types, return the repr directly
-  if(obj == (PyObject *)&_Py_TrueStruct ||
-     obj == (PyObject *)&_Py_FalseStruct ||
-     PyObject_IsInstance(obj, (PyObject*)&_PyNone_Type) ||
+  if(obj == Py_True ||
+     obj == Py_False ||
+     obj == Py_None ||
      PyObject_IsInstance(obj, (PyObject*)&PyFloat_Type) ||
      PyObject_IsInstance(obj, (PyObject*)&PyLong_Type) ||
      PyObject_IsInstance(obj, (PyObject*)&PyBytes_Type) ||