libobs: Add obs_source_load2()

Allows loading a source and all of its filters automatically.
Previously, the original obs_source_load would not load filters.
This commit is contained in:
jp9000 2021-04-06 11:52:46 -07:00
parent 0ecf24d0ed
commit ca08df9fb2
3 changed files with 18 additions and 7 deletions

View file

@ -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")

View file

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

View file

@ -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 */