libobs: Add obs_canvas_rename_source()
This commit is contained in:
parent
22c4e11ec8
commit
66f47924ea
3 changed files with 48 additions and 16 deletions
|
|
@ -34,6 +34,7 @@ static const char *canvas_signals[] = {
|
|||
|
||||
"void source_add(ptr canvas, ptr source)",
|
||||
"void source_remove(ptr canvas, ptr source)",
|
||||
"void source_rename(ptr source, string new_name, string prev_name)",
|
||||
|
||||
"void rename(ptr source, string new_name, string prev_name)",
|
||||
|
||||
|
|
@ -367,6 +368,32 @@ void obs_canvas_remove_source(obs_source_t *source)
|
|||
source->canvas = NULL;
|
||||
}
|
||||
|
||||
void obs_canvas_rename_source(obs_source_t *source, const char *name)
|
||||
{
|
||||
obs_canvas_t *canvas = obs_weak_canvas_get_canvas(source->canvas);
|
||||
if (canvas) {
|
||||
struct calldata data;
|
||||
char *prev_name = bstrdup(source->context.name);
|
||||
|
||||
obs_context_data_setname_ht(&source->context, name, &canvas->sources);
|
||||
|
||||
calldata_init(&data);
|
||||
calldata_set_ptr(&data, "source", source);
|
||||
calldata_set_string(&data, "new_name", source->context.name);
|
||||
calldata_set_string(&data, "prev_name", prev_name);
|
||||
|
||||
signal_handler_signal(source->context.signals, "rename", &data);
|
||||
signal_handler_signal(canvas->context.signals, "source_rename", &data);
|
||||
if (canvas->flags & MAIN)
|
||||
signal_handler_signal(obs->signals, "source_rename", &data);
|
||||
|
||||
calldata_free(&data);
|
||||
bfree(prev_name);
|
||||
|
||||
obs_canvas_release(canvas);
|
||||
}
|
||||
}
|
||||
|
||||
/*** Public Canvas Object API ***/
|
||||
|
||||
bool obs_canvas_reset_video(obs_canvas_t *canvas, struct obs_video_info *ovi)
|
||||
|
|
|
|||
|
|
@ -683,6 +683,7 @@ extern void obs_free_canvas_mixes(void);
|
|||
extern bool obs_canvas_reset_video_internal(obs_canvas_t *canvas, struct obs_video_info *ovi);
|
||||
extern void obs_canvas_insert_source(obs_canvas_t *canvas, obs_source_t *source);
|
||||
extern void obs_canvas_remove_source(obs_source_t *source);
|
||||
extern void obs_canvas_rename_source(obs_source_t *source, const char *name);
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* sources */
|
||||
|
|
|
|||
|
|
@ -4144,24 +4144,28 @@ void obs_source_set_name(obs_source_t *source, const char *name)
|
|||
return;
|
||||
|
||||
if (!name || !*name || !source->context.name || strcmp(name, source->context.name) != 0) {
|
||||
struct calldata data;
|
||||
char *prev_name = bstrdup(source->context.name);
|
||||
|
||||
if (!source->context.private) {
|
||||
obs_context_data_setname_ht(&source->context, name, &obs->data.public_sources);
|
||||
if (requires_canvas(source)) {
|
||||
obs_canvas_rename_source(source, name);
|
||||
} else {
|
||||
obs_context_data_setname(&source->context, name);
|
||||
}
|
||||
struct calldata data;
|
||||
char *prev_name = bstrdup(source->context.name);
|
||||
|
||||
calldata_init(&data);
|
||||
calldata_set_ptr(&data, "source", source);
|
||||
calldata_set_string(&data, "new_name", source->context.name);
|
||||
calldata_set_string(&data, "prev_name", prev_name);
|
||||
if (!source->context.private)
|
||||
signal_handler_signal(obs->signals, "source_rename", &data);
|
||||
signal_handler_signal(source->context.signals, "rename", &data);
|
||||
calldata_free(&data);
|
||||
bfree(prev_name);
|
||||
if (!source->context.private) {
|
||||
obs_context_data_setname_ht(&source->context, name, &obs->data.public_sources);
|
||||
} else {
|
||||
obs_context_data_setname(&source->context, name);
|
||||
}
|
||||
|
||||
calldata_init(&data);
|
||||
calldata_set_ptr(&data, "source", source);
|
||||
calldata_set_string(&data, "new_name", source->context.name);
|
||||
calldata_set_string(&data, "prev_name", prev_name);
|
||||
if (!source->context.private)
|
||||
signal_handler_signal(obs->signals, "source_rename", &data);
|
||||
signal_handler_signal(source->context.signals, "rename", &data);
|
||||
calldata_free(&data);
|
||||
bfree(prev_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue