From ec86bdaa09c53285bbee6ed7625538ef7729efb0 Mon Sep 17 00:00:00 2001 From: Palana Date: Fri, 30 Oct 2015 11:10:06 +0100 Subject: [PATCH] libobs: Add obs_save_sources_filtered (skip) (Note: This commit breaks UI compilation. Skip if bisecting) Adds a means of saving specific sources that the front-end chooses, rather than being forced to use the now-removed "user list". --- libobs/obs.c | 18 ++++++++++++++++-- libobs/obs.h | 4 ++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libobs/obs.c b/libobs/obs.c index b70958365..ca268e681 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -1572,7 +1572,8 @@ obs_data_t *obs_save_source(obs_source_t *source) return source_data; } -obs_data_array_t *obs_save_sources(void) +obs_data_array_t *obs_save_sources_filtered(obs_save_source_filter_cb cb, + void *data_) { struct obs_core_data *data = &obs->data; obs_data_array_t *array; @@ -1587,7 +1588,8 @@ obs_data_array_t *obs_save_sources(void) source = data->first_source; while (source) { - if ((source->info.type == OBS_SOURCE_TYPE_INPUT) != 0) { + if ((source->info.type == OBS_SOURCE_TYPE_INPUT) != 0 && + cb(data_, source)) { obs_data_t *source_data = obs_save_source(source); obs_data_array_push_back(array, source_data); @@ -1602,6 +1604,18 @@ obs_data_array_t *obs_save_sources(void) return array; } +static bool save_source_filter(void *data, obs_source_t *source) +{ + UNUSED_PARAMETER(data); + UNUSED_PARAMETER(source); + return true; +} + +obs_data_array_t *obs_save_sources(void) +{ + return obs_save_sources_filtered(save_source_filter, NULL); +} + /* ensures that names are never blank */ static inline char *dup_name(const char *name) { diff --git a/libobs/obs.h b/libobs/obs.h index 28e7433e8..99da46e51 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -560,6 +560,10 @@ EXPORT void obs_load_sources(obs_data_array_t *array); /** Saves sources to a data array */ EXPORT obs_data_array_t *obs_save_sources(void); +typedef bool (*obs_save_source_filter_cb)(void *data, obs_source_t *source); +EXPORT obs_data_array_t *obs_save_sources_filtered(obs_save_source_filter_cb cb, + void *data); + /* ------------------------------------------------------------------------- */ /* View context */