diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 7fc248e8f..f5f98fe5f 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -4114,6 +4114,19 @@ void obs_source_load(obs_source_t *source) obs_source_dosignal(source, "source_load", "load"); } +void obs_source_load2(obs_source_t *source) +{ + if (!data_valid(source, "obs_source_load2")) + return; + + obs_source_load(source); + + for (size_t i = source->filters.num; i > 0; i--) { + obs_source_t *filter = source->filters.array[i - 1]; + obs_source_load(filter); + } +} + bool obs_source_active(const obs_source_t *source) { return obs_source_valid(source, "obs_source_active") diff --git a/libobs/obs.c b/libobs/obs.c index 09f1e6500..966c91b48 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -1904,12 +1904,7 @@ void obs_load_sources(obs_data_array_t *array, obs_load_source_cb cb, if (source) { if (source->info.type == OBS_SOURCE_TYPE_TRANSITION) obs_transition_load(source, source_data); - obs_source_load(source); - for (size_t i = source->filters.num; i > 0; i--) { - obs_source_t *filter = - source->filters.array[i - 1]; - obs_source_load(filter); - } + obs_source_load2(source); if (cb) cb(private_data, source); } diff --git a/libobs/obs.h b/libobs/obs.h index 4d1136a0a..5daf5d8f3 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -696,9 +696,12 @@ EXPORT obs_source_t *obs_load_source(obs_data_t *data); /** Send a save signal to sources */ EXPORT void obs_source_save(obs_source_t *source); -/** Send a load signal to sources */ +/** Send a load signal to sources (soft deprecated; does not load filters) */ EXPORT void obs_source_load(obs_source_t *source); +/** Send a load signal to sources */ +EXPORT void obs_source_load2(obs_source_t *source); + typedef void (*obs_load_source_cb)(void *private_data, obs_source_t *source); /** Loads sources from a data array */