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.
This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2019-08-02 18:35:23 +02:00 committed by jp9000
parent 36a123f653
commit cdc613a5ea

View file

@ -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;