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) ||