Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
ecdc81ba
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ecdc81ba
编写于
1月 27, 2021
作者:
P
PatTheMav
提交者:
jp9000
1月 27, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
obs-scripting: Add Py 3.8+ C-API changes
Closes obsproject/obs-studio#3689
上级
44ace761
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
68 addition
and
1 deletion
+68
-1
deps/obs-scripting/obs-scripting-python-import.c
deps/obs-scripting/obs-scripting-python-import.c
+7
-0
deps/obs-scripting/obs-scripting-python-import.h
deps/obs-scripting/obs-scripting-python-import.h
+58
-0
deps/obs-scripting/obs-scripting-python.c
deps/obs-scripting/obs-scripting-python.c
+3
-1
未找到文件。
deps/obs-scripting/obs-scripting-python-import.c
浏览文件 @
ecdc81ba
...
...
@@ -143,6 +143,13 @@ bool import_python(const char *python_path)
IMPORT_FUNC
(
_Py_NoneStruct
);
IMPORT_FUNC
(
PyTuple_New
);
#if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0
IMPORT_FUNC
(
_Py_Dealloc
);
#endif
#if PY_VERSION_HEX >= 0x030900b0
IMPORT_FUNC
(
PyType_GetFlags
);
#endif
#undef IMPORT_FUNC
success
=
true
;
...
...
deps/obs-scripting/obs-scripting-python-import.h
浏览文件 @
ecdc81ba
...
...
@@ -39,6 +39,14 @@
#include <Python.h>
#endif
#if defined(HAVE_ATTRIBUTE_UNUSED) || defined(__MINGW32__)
#if !defined(UNUSED)
#define UNUSED __attribute__((unused))
#endif
#else
#define UNUSED
#endif
#ifdef _MSC_VER
#pragma warning(pop)
#endif
...
...
@@ -135,11 +143,23 @@ PY_EXTERN PyObject *(*Import_PyLong_FromUnsignedLongLong)(unsigned long long);
PY_EXTERN
int
(
*
Import_PyArg_VaParse
)(
PyObject
*
,
const
char
*
,
va_list
);
PY_EXTERN
PyObject
(
*
Import__Py_NoneStruct
);
PY_EXTERN
PyObject
*
(
*
Import_PyTuple_New
)(
Py_ssize_t
size
);
#if PY_VERSION_HEX >= 0x030900b0
PY_EXTERN
int
(
*
Import_PyType_GetFlags
)(
PyTypeObject
*
o
);
#endif
#if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0
PY_EXTERN
void
(
*
Import__Py_Dealloc
)(
PyObject
*
obj
);
#endif
extern
bool
import_python
(
const
char
*
python_path
);
#ifndef NO_REDEFS
#define PyType_Ready Import_PyType_Ready
#if PY_VERSION_HEX >= 0x030900b0
#define PyType_GetFlags Import_PyType_GetFlags
#endif
#if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0
#define _Py_Dealloc Import__Py_Dealloc
#endif
#define PyObject_GenericGetAttr Import_PyObject_GenericGetAttr
#define PyObject_IsTrue Import_PyObject_IsTrue
#define Py_DecRef Import_Py_DecRef
...
...
@@ -210,6 +230,44 @@ extern bool import_python(const char *python_path);
#define PyArg_VaParse Import_PyArg_VaParse
#define _Py_NoneStruct (*Import__Py_NoneStruct)
#define PyTuple_New Import_PyTuple_New
#if PY_VERSION_HEX >= 0x030800f0
static
inline
void
Import__Py_DECREF
(
const
char
*
filename
UNUSED
,
int
lineno
UNUSED
,
PyObject
*
op
)
{
if
(
--
op
->
ob_refcnt
!=
0
)
{
#ifdef Py_REF_DEBUG
if
(
op
->
ob_refcnt
<
0
)
{
_Py_NegativeRefcount
(
filename
,
lineno
,
op
);
}
#endif
}
else
{
_Py_Dealloc
(
op
);
}
}
#undef Py_DECREF
#define Py_DECREF(op) Import__Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
static
inline
void
Import__Py_XDECREF
(
PyObject
*
op
)
{
if
(
op
!=
NULL
)
{
Py_DECREF
(
op
);
}
}
#undef Py_XDECREF
#define Py_XDECREF(op) Import__Py_XDECREF(_PyObject_CAST(op))
#endif
#if PY_VERSION_HEX >= 0x030900b0
static
inline
int
Import_PyType_HasFeature
(
PyTypeObject
*
type
,
unsigned
long
feature
)
{
return
((
PyType_GetFlags
(
type
)
&
feature
)
!=
0
);
}
#define PyType_HasFeature(t, f) Import_PyType_HasFeature(t, f)
#endif
#endif
#endif
deps/obs-scripting/obs-scripting-python.c
浏览文件 @
ecdc81ba
...
...
@@ -1654,7 +1654,9 @@ bool obs_scripting_load_python(const char *python_path)
/* ---------------------------------------------- */
/* Load main interface module */
add_to_python_path
(
SCRIPT_DIR
);
char
*
absolute_script_path
=
os_get_abs_path_ptr
(
SCRIPT_DIR
);
add_to_python_path
(
absolute_script_path
);
bfree
(
absolute_script_path
);
#if __APPLE__
char
*
exec_path
=
os_get_executable_path_ptr
(
""
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录