提交 fc37cbcc 编写于 作者: J jp9000

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.
上级 c43702e3
......@@ -331,6 +331,8 @@ struct obs_core_data {
long long unnamed_index;
obs_data_t *private_data;
volatile bool valid;
};
......
......@@ -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;
}
......@@ -682,6 +682,10 @@ EXPORT uint64_t obs_get_average_frame_time_ns(void);
EXPORT uint32_t obs_get_total_frames(void);
EXPORT uint32_t obs_get_lagged_frames(void);
EXPORT void obs_apply_private_data(obs_data_t *settings);
EXPORT void obs_set_private_data(obs_data_t *settings);
EXPORT obs_data_t *obs_get_private_data(void);
/* ------------------------------------------------------------------------- */
/* View context */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册