Browse Source

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.
jp9000 4 years ago
parent
commit
ca08df9fb2
3 changed files with 18 additions and 7 deletions
  1. 13 0
      libobs/obs-source.c
  2. 1 6
      libobs/obs.c
  3. 4 1
      libobs/obs.h

+ 13 - 0
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")

+ 1 - 6
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);
 		}

+ 4 - 1
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 */