0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

libobs: Insert sources to linked lists after creation

This fixes a race condition where the audio/video backends/threads may
start using sources before their obs_source_info::create function has
been called.
This commit is contained in:
jp9000 2019-08-25 19:17:20 -07:00
parent 2557ffce7e
commit 0845844e5d

View File

@ -190,6 +190,12 @@ static bool obs_source_init(struct obs_source *source)
source->control->source = source;
source->audio_mixers = 0xFF;
source->private_settings = obs_data_create();
return true;
}
static void obs_source_init_finalize(struct obs_source *source)
{
if (is_audio_source(source)) {
pthread_mutex_lock(&obs->data.audio_sources_mutex);
@ -203,11 +209,8 @@ static bool obs_source_init(struct obs_source *source)
pthread_mutex_unlock(&obs->data.audio_sources_mutex);
}
source->private_settings = obs_data_create();
obs_context_data_insert(&source->context, &obs->data.sources_mutex,
&obs->data.first_source);
return true;
}
static bool obs_source_hotkey_mute(void *data, obs_hotkey_pair_id id,
@ -369,6 +372,7 @@ static obs_source_t *obs_source_create_internal(const char *id,
obs_source_dosignal(source, "source_create", NULL);
}
obs_source_init_finalize(source);
return source;
fail: