diff --git a/deps/obs-scripting/obs-scripting-lua-source.c b/deps/obs-scripting/obs-scripting-lua-source.c index cdb37dc5b..5be86aee6 100644 --- a/deps/obs-scripting/obs-scripting-lua-source.c +++ b/deps/obs-scripting/obs-scripting-lua-source.c @@ -641,11 +641,7 @@ static int obs_lua_register_source(lua_State *script) if (!existing) { ls.data = current_lua_script; - pthread_mutexattr_t mutexattr; - pthread_mutexattr_init(&mutexattr); - pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&ls.definition_mutex, &mutexattr); - pthread_mutexattr_destroy(&mutexattr); + pthread_mutex_init_recursive(&ls.definition_mutex); info.type_data = bmemdup(&ls, sizeof(ls)); info.free_type_data = obs_lua_source_free_type_data; diff --git a/deps/obs-scripting/obs-scripting-lua.c b/deps/obs-scripting/obs-scripting-lua.c index bd7e672c8..85bc3815a 100644 --- a/deps/obs-scripting/obs-scripting-lua.c +++ b/deps/obs-scripting/obs-scripting-lua.c @@ -55,10 +55,10 @@ package.path = package.path .. \";\" .. script_path() .. \"/?.lua\"\n"; static char *startup_script = NULL; -static pthread_mutex_t tick_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t tick_mutex; static struct obs_lua_script *first_tick_script = NULL; -pthread_mutex_t lua_source_def_mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t lua_source_def_mutex; #define ls_get_libobs_obj(type, lua_index, obs_obj) \ ls_get_libobs_obj_(script, #type " *", lua_index, obs_obj, NULL, \ @@ -242,7 +242,7 @@ struct lua_obs_timer { uint64_t interval; }; -static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t timer_mutex; static struct lua_obs_timer *first_timer = NULL; static inline void lua_obs_timer_init(struct lua_obs_timer *timer) @@ -1119,12 +1119,9 @@ obs_script_t *obs_lua_script_create(const char *path, obs_data_t *settings) data->base.type = OBS_SCRIPT_LANG_LUA; data->tick = LUA_REFNIL; - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); pthread_mutex_init_value(&data->mutex); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - if (pthread_mutex_init(&data->mutex, &attr) != 0) { + if (pthread_mutex_init_recursive(&data->mutex) != 0) { bfree(data); return NULL; } @@ -1300,12 +1297,8 @@ void obs_lua_load(void) struct dstr dep_paths = {0}; struct dstr tmp = {0}; - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&tick_mutex, NULL); - pthread_mutex_init(&timer_mutex, &attr); + pthread_mutex_init_recursive(&timer_mutex); pthread_mutex_init(&lua_source_def_mutex, NULL); /* ---------------------------------------------- */ diff --git a/deps/obs-scripting/obs-scripting-python.c b/deps/obs-scripting/obs-scripting-python.c index 3fc6a5535..5f3b76eac 100644 --- a/deps/obs-scripting/obs-scripting-python.c +++ b/deps/obs-scripting/obs-scripting-python.c @@ -53,8 +53,9 @@ static wchar_t home_path[1024] = {0}; DARRAY(char *) python_paths; static bool python_loaded = false; +static bool mutexes_loaded = false; -static pthread_mutex_t tick_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t tick_mutex; static struct obs_python_script *first_tick_script = NULL; static PyObject *py_obspython = NULL; @@ -378,7 +379,7 @@ struct python_obs_timer { uint64_t interval; }; -static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t timer_mutex; static struct python_obs_timer *first_timer = NULL; static inline void python_obs_timer_init(struct python_obs_timer *timer) @@ -1570,12 +1571,10 @@ void obs_python_load(void) { da_init(python_paths); - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&tick_mutex, NULL); - pthread_mutex_init(&timer_mutex, &attr); + pthread_mutex_init_recursive(&timer_mutex); + + mutexes_loaded = true; } extern void add_python_frontend_funcs(PyObject *module); @@ -1702,6 +1701,11 @@ out: void obs_python_unload(void) { + if (mutexes_loaded) { + pthread_mutex_destroy(&tick_mutex); + pthread_mutex_destroy(&timer_mutex); + } + if (!python_loaded_at_all) return; @@ -1720,8 +1724,6 @@ void obs_python_unload(void) bfree(python_paths.array[i]); da_free(python_paths); - pthread_mutex_destroy(&tick_mutex); - pthread_mutex_destroy(&timer_mutex); dstr_free(&cur_py_log_chunk); python_loaded_at_all = false;