0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

libobs: Add function to load private sources

If a private source is loaded with the obs_load_source function,
it is loaded as a normal source, so add a new function
to load private sources.
This commit is contained in:
Clayton Groeneveld 2022-02-12 15:39:31 -06:00 committed by Jim
parent 61cbfb3b9a
commit 3df2f3e069
4 changed files with 20 additions and 11 deletions

View File

@ -821,11 +821,10 @@ struct audio_monitor *audio_monitor_create(obs_source_t *source);
void audio_monitor_reset(struct audio_monitor *monitor);
extern void audio_monitor_destroy(struct audio_monitor *monitor);
extern obs_source_t *obs_source_create_set_last_ver(const char *id,
const char *name,
obs_data_t *settings,
obs_data_t *hotkey_data,
uint32_t last_obs_ver);
extern obs_source_t *
obs_source_create_set_last_ver(const char *id, const char *name,
obs_data_t *settings, obs_data_t *hotkey_data,
uint32_t last_obs_ver, bool is_private);
extern void obs_source_destroy(struct obs_source *source);
enum view_type {

View File

@ -433,10 +433,11 @@ obs_source_t *obs_source_create_private(const char *id, const char *name,
obs_source_t *obs_source_create_set_last_ver(const char *id, const char *name,
obs_data_t *settings,
obs_data_t *hotkey_data,
uint32_t last_obs_ver)
uint32_t last_obs_ver,
bool is_private)
{
return obs_source_create_internal(id, name, settings, hotkey_data,
false, last_obs_ver);
is_private, last_obs_ver);
}
static char *get_new_filter_name(obs_source_t *dst, const char *name)

View File

@ -1780,7 +1780,8 @@ float obs_get_master_volume(void)
return obs->audio.user_volume;
}
static obs_source_t *obs_load_source_type(obs_data_t *source_data)
static obs_source_t *obs_load_source_type(obs_data_t *source_data,
bool is_private)
{
obs_data_array_t *filters = obs_data_get_array(source_data, "filters");
obs_source_t *source;
@ -1806,7 +1807,7 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data)
v_id = id;
source = obs_source_create_set_last_ver(v_id, name, settings, hotkeys,
prev_ver);
prev_ver, is_private);
if (source->owns_info_id) {
bfree((void *)source->info.unversioned_id);
source->info.unversioned_id = bstrdup(id);
@ -1894,7 +1895,7 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data)
obs_data_array_item(filters, i);
obs_source_t *filter =
obs_load_source_type(filter_data);
obs_load_source_type(filter_data, true);
if (filter) {
obs_source_filter_add(source, filter);
obs_source_release(filter);
@ -1913,7 +1914,12 @@ static obs_source_t *obs_load_source_type(obs_data_t *source_data)
obs_source_t *obs_load_source(obs_data_t *source_data)
{
return obs_load_source_type(source_data);
return obs_load_source_type(source_data, false);
}
obs_source_t *obs_load_private_source(obs_data_t *source_data)
{
return obs_load_source_type(source_data, true);
}
void obs_load_sources(obs_data_array_t *array, obs_load_source_cb cb,

View File

@ -717,6 +717,9 @@ EXPORT obs_data_t *obs_save_source(obs_source_t *source);
/** Loads a source from settings data */
EXPORT obs_source_t *obs_load_source(obs_data_t *data);
/** Loads a private source from settings data */
EXPORT obs_source_t *obs_load_private_source(obs_data_t *data);
/** Send a save signal to sources */
EXPORT void obs_source_save(obs_source_t *source);