From cdc613a5ea6b6ff9a4d274601a2a42a7eae390fb Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Fri, 2 Aug 2019 18:35:23 +0200 Subject: [PATCH] obs-scripting: Use a recursive mutex for Lua scripting This enables stacking of Lua driven filters of the same kind without freezing OBS Studio in place, or even crashing. --- deps/obs-scripting/obs-scripting-lua-source.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/deps/obs-scripting/obs-scripting-lua-source.c b/deps/obs-scripting/obs-scripting-lua-source.c index f53324c82..cdb37dc5b 100644 --- a/deps/obs-scripting/obs-scripting-lua-source.c +++ b/deps/obs-scripting/obs-scripting-lua-source.c @@ -641,7 +641,12 @@ static int obs_lua_register_source(lua_State *script) if (!existing) { ls.data = current_lua_script; - pthread_mutex_init(&ls.definition_mutex, NULL); + 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); + info.type_data = bmemdup(&ls, sizeof(ls)); info.free_type_data = obs_lua_source_free_type_data; info.get_name = obs_lua_source_get_name;