From a78558b46a354cc6942a139b50aaa24f3a4f5d04 Mon Sep 17 00:00:00 2001 From: Scratch Date: Tue, 15 Dec 2020 22:49:22 +1100 Subject: [PATCH] obs-scripting: add transition duration functions --- .../obs-scripting-lua-frontend.c | 18 +++++++++++++++ .../obs-scripting-python-frontend.c | 22 +++++++++++++++++++ .../obs-scripting-python-import.c | 1 + .../obs-scripting-python-import.h | 2 ++ 4 files changed, 43 insertions(+) diff --git a/deps/obs-scripting/obs-scripting-lua-frontend.c b/deps/obs-scripting/obs-scripting-lua-frontend.c index 717596288..421183bbd 100644 --- a/deps/obs-scripting/obs-scripting-lua-frontend.c +++ b/deps/obs-scripting/obs-scripting-lua-frontend.c @@ -113,6 +113,22 @@ static int set_current_transition(lua_State *script) return 0; } +static int get_transition_duration(lua_State *script) +{ + int duration = obs_frontend_get_transition_duration(); + lua_pushinteger(script, duration); + return 1; +} + +static int set_transition_duration(lua_State *script) +{ + if (lua_isnumber(script, 1)) { + int duration = (int)lua_tointeger(script, 1); + obs_frontend_set_transition_duration(duration); + } + return 0; +} + static int get_scene_collections(lua_State *script) { char **names = obs_frontend_get_scene_collections(); @@ -299,6 +315,8 @@ void add_lua_frontend_funcs(lua_State *script) add_func(get_transitions); add_func(get_current_transition); add_func(set_current_transition); + add_func(get_transition_duration); + add_func(set_transition_duration); add_func(get_scene_collections); add_func(get_current_scene_collection); add_func(set_current_scene_collection); diff --git a/deps/obs-scripting/obs-scripting-python-frontend.c b/deps/obs-scripting/obs-scripting-python-frontend.c index 234c41286..52279b562 100644 --- a/deps/obs-scripting/obs-scripting-python-frontend.c +++ b/deps/obs-scripting/obs-scripting-python-frontend.c @@ -161,6 +161,26 @@ static PyObject *set_current_transition(PyObject *self, PyObject *args) return python_none(); } +static PyObject *get_transition_duration(PyObject *self, PyObject *args) +{ + int duration = obs_frontend_get_transition_duration(); + PyObject *ret = PyLong_FromLong(duration); + UNUSED_PARAMETER(self); + UNUSED_PARAMETER(args); + return ret; +} + +static PyObject *set_transition_duration(PyObject *self, PyObject *args) +{ + int duration; + if (!parse_args(args, "i", &duration)) + return python_none(); + + obs_frontend_set_transition_duration(duration); + UNUSED_PARAMETER(self); + return python_none(); +} + static PyObject *get_scene_collections(PyObject *self, PyObject *args) { char **names = obs_frontend_get_scene_collections(); @@ -415,6 +435,8 @@ void add_python_frontend_funcs(PyObject *module) DEF_FUNC(get_transitions), DEF_FUNC(get_current_transition), DEF_FUNC(set_current_transition), + DEF_FUNC(set_transition_duration), + DEF_FUNC(get_transition_duration), DEF_FUNC(get_scene_collections), DEF_FUNC(get_current_scene_collection), DEF_FUNC(set_current_scene_collection), diff --git a/deps/obs-scripting/obs-scripting-python-import.c b/deps/obs-scripting/obs-scripting-python-import.c index 9be85161c..86079faec 100644 --- a/deps/obs-scripting/obs-scripting-python-import.c +++ b/deps/obs-scripting/obs-scripting-python-import.c @@ -81,6 +81,7 @@ bool import_python(const char *python_path) IMPORT_FUNC(PyUnicode_FromFormat); IMPORT_FUNC(PyUnicode_Concat); IMPORT_FUNC(PyLong_FromVoidPtr); + IMPORT_FUNC(PyLong_FromLong); IMPORT_FUNC(PyBool_FromLong); IMPORT_FUNC(PyGILState_Ensure); IMPORT_FUNC(PyGILState_GetThisThreadState); diff --git a/deps/obs-scripting/obs-scripting-python-import.h b/deps/obs-scripting/obs-scripting-python-import.h index 3b51359c0..ff760e8a3 100644 --- a/deps/obs-scripting/obs-scripting-python-import.h +++ b/deps/obs-scripting/obs-scripting-python-import.h @@ -69,6 +69,7 @@ PY_EXTERN PyObject *(*Import_PyObject_Init)(PyObject *, PyTypeObject *); PY_EXTERN PyObject *(*Import_PyUnicode_FromFormat)(const char *format, ...); PY_EXTERN PyObject *(*Import_PyUnicode_Concat)(PyObject *left, PyObject *right); PY_EXTERN PyObject *(*Import_PyLong_FromVoidPtr)(void *); +PY_EXTERN PyObject *(*Import_PyLong_FromLong)(long); PY_EXTERN PyObject *(*Import_PyBool_FromLong)(long); PY_EXTERN PyGILState_STATE (*Import_PyGILState_Ensure)(void); PY_EXTERN PyThreadState *(*Import_PyGILState_GetThisThreadState)(void); @@ -169,6 +170,7 @@ extern bool import_python(const char *python_path); #define PyUnicode_FromFormat Import_PyUnicode_FromFormat #define PyUnicode_Concat Import_PyUnicode_Concat #define PyLong_FromVoidPtr Import_PyLong_FromVoidPtr +#define PyLong_FromLong Import_PyLong_FromLong #define PyBool_FromLong Import_PyBool_FromLong #define PyGILState_Ensure Import_PyGILState_Ensure #define PyGILState_GetThisThreadState Import_PyGILState_GetThisThreadState