diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 234bbaa47..dfdfaa9d3 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -111,6 +111,8 @@ const char *obs_source_get_display_name(enum obs_source_type type, bool obs_source_init(struct obs_source *source, const struct obs_source_info *info) { + pthread_mutexattr_t attr; + source->refs = 1; source->user_volume = 1.0f; source->present_volume = 1.0f; @@ -120,7 +122,11 @@ bool obs_source_init(struct obs_source *source, pthread_mutex_init_value(&source->async_mutex); pthread_mutex_init_value(&source->audio_mutex); - if (pthread_mutex_init(&source->filter_mutex, NULL) != 0) + if (pthread_mutexattr_init(&attr) != 0) + return false; + if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) + return false; + if (pthread_mutex_init(&source->filter_mutex, &attr) != 0) return false; if (pthread_mutex_init(&source->audio_mutex, NULL) != 0) return false;