libobs: Add functions to get/set global private data
Allows the ability to set custom global OBS context private data for allowing the frontend to communicate variables with plugins in an indirect way.
This commit is contained in:
30
libobs/obs.c
30
libobs/obs.c
@@ -565,6 +565,7 @@ static bool obs_init_data(void)
|
||||
if (!obs_view_init(&data->main_view))
|
||||
goto fail;
|
||||
|
||||
data->private_data = obs_data_create();
|
||||
data->valid = true;
|
||||
|
||||
fail:
|
||||
@@ -620,6 +621,7 @@ static void obs_free_data(void)
|
||||
pthread_mutex_destroy(&data->draw_callbacks_mutex);
|
||||
da_free(data->draw_callbacks);
|
||||
da_free(data->tick_callbacks);
|
||||
obs_data_release(data->private_data);
|
||||
}
|
||||
|
||||
static const char *obs_signals[] = {
|
||||
@@ -2159,3 +2161,31 @@ void obs_remove_raw_video_callback(
|
||||
return;
|
||||
stop_raw_video(video->video, callback, param);
|
||||
}
|
||||
|
||||
void obs_apply_private_data(obs_data_t *settings)
|
||||
{
|
||||
if (!obs || !settings)
|
||||
return;
|
||||
|
||||
obs_data_apply(obs->data.private_data, settings);
|
||||
}
|
||||
|
||||
void obs_set_private_data(obs_data_t *settings)
|
||||
{
|
||||
if (!obs)
|
||||
return;
|
||||
|
||||
obs_data_clear(obs->data.private_data);
|
||||
if (settings)
|
||||
obs_data_apply(obs->data.private_data, settings);
|
||||
}
|
||||
|
||||
obs_data_t *obs_get_private_data(void)
|
||||
{
|
||||
if (!obs)
|
||||
return NULL;
|
||||
|
||||
obs_data_t *private_data = obs->data.private_data;
|
||||
obs_data_addref(private_data);
|
||||
return private_data;
|
||||
}
|
||||
|
Reference in New Issue
Block a user