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

(API Change) libobs: Rename funcs relating to active child sources

Renames:
----------------------------------------
obs_source_add_child
obs_source_remove_child
obs_source_enum_sources
obs_source_enum_tree
obs_source_info::enum_sources

To:
----------------------------------------
obs_source_add_active_child
obs_source_remove_active_child
obs_source_enum_active_sources
obs_source_enum_active_tree
obs_source_info::enum_active_sources

These functions/callbacks had misleading names: they originally implied
any child sources, when they actually meant active child sources that
are being used to render video or audio.  It's important that the
function names represent their actual purpose.
This commit is contained in:
jp9000 2015-12-22 04:59:02 -08:00
parent 684b43ccfa
commit c8f4fbe42b
4 changed files with 49 additions and 42 deletions

View File

@ -467,7 +467,7 @@ const struct obs_source_info scene_info =
.get_height = scene_getheight, .get_height = scene_getheight,
.load = scene_load, .load = scene_load,
.save = scene_save, .save = scene_save,
.enum_sources = scene_enum_sources .enum_active_sources = scene_enum_sources
}; };
obs_scene_t *obs_scene_create(const char *name) obs_scene_t *obs_scene_create(const char *name)
@ -681,7 +681,7 @@ obs_sceneitem_t *obs_scene_add(obs_scene_t *scene, obs_source_t *source)
return NULL; return NULL;
} }
if (!obs_source_add_child(scene->source, source)) { if (!obs_source_add_active_child(scene->source, source)) {
blog(LOG_WARNING, "Failed to add source to scene due to " blog(LOG_WARNING, "Failed to add source to scene due to "
"infinite source recursion"); "infinite source recursion");
return NULL; return NULL;
@ -772,7 +772,7 @@ void obs_sceneitem_remove(obs_sceneitem_t *item)
assert(scene != NULL); assert(scene != NULL);
assert(scene->source != NULL); assert(scene->source != NULL);
obs_source_remove_child(scene->source, item->source); obs_source_remove_active_child(scene->source, item->source);
signal_item_remove(item); signal_item_remove(item);
detach_sceneitem(item); detach_sceneitem(item);

View File

@ -737,12 +737,13 @@ void obs_source_activate(obs_source_t *source, enum view_type type)
return; return;
if (os_atomic_inc_long(&source->show_refs) == 1) { if (os_atomic_inc_long(&source->show_refs) == 1) {
obs_source_enum_tree(source, show_tree, NULL); obs_source_enum_active_tree(source, show_tree, NULL);
} }
if (type == MAIN_VIEW) { if (type == MAIN_VIEW) {
if (os_atomic_inc_long(&source->activate_refs) == 1) { if (os_atomic_inc_long(&source->activate_refs) == 1) {
obs_source_enum_tree(source, activate_tree, NULL); obs_source_enum_active_tree(source, activate_tree,
NULL);
} }
} }
} }
@ -753,12 +754,13 @@ void obs_source_deactivate(obs_source_t *source, enum view_type type)
return; return;
if (os_atomic_dec_long(&source->show_refs) == 0) { if (os_atomic_dec_long(&source->show_refs) == 0) {
obs_source_enum_tree(source, hide_tree, NULL); obs_source_enum_active_tree(source, hide_tree, NULL);
} }
if (type == MAIN_VIEW) { if (type == MAIN_VIEW) {
if (os_atomic_dec_long(&source->activate_refs) == 0) { if (os_atomic_dec_long(&source->activate_refs) == 0) {
obs_source_enum_tree(source, deactivate_tree, NULL); obs_source_enum_active_tree(source, deactivate_tree,
NULL);
} }
} }
} }
@ -2585,9 +2587,9 @@ static void enum_source_tree_callback(obs_source_t *parent, obs_source_t *child,
{ {
struct source_enum_data *data = param; struct source_enum_data *data = param;
if (child->info.enum_sources) { if (child->info.enum_active_sources) {
if (child->context.data) { if (child->context.data) {
child->info.enum_sources(child->context.data, child->info.enum_active_sources(child->context.data,
enum_source_tree_callback, data); enum_source_tree_callback, data);
} }
} }
@ -2595,36 +2597,37 @@ static void enum_source_tree_callback(obs_source_t *parent, obs_source_t *child,
data->enum_callback(parent, child, data->param); data->enum_callback(parent, child, data->param);
} }
void obs_source_enum_sources(obs_source_t *source, void obs_source_enum_active_sources(obs_source_t *source,
obs_source_enum_proc_t enum_callback, obs_source_enum_proc_t enum_callback,
void *param) void *param)
{ {
if (!data_valid(source, "obs_source_enum_sources")) if (!data_valid(source, "obs_source_enum_active_sources"))
return; return;
if (!source->info.enum_sources) if (!source->info.enum_active_sources)
return; return;
obs_source_addref(source); obs_source_addref(source);
source->info.enum_sources(source->context.data, enum_callback, param); source->info.enum_active_sources(source->context.data, enum_callback,
param);
obs_source_release(source); obs_source_release(source);
} }
void obs_source_enum_tree(obs_source_t *source, void obs_source_enum_active_tree(obs_source_t *source,
obs_source_enum_proc_t enum_callback, obs_source_enum_proc_t enum_callback,
void *param) void *param)
{ {
struct source_enum_data data = {enum_callback, param}; struct source_enum_data data = {enum_callback, param};
if (!data_valid(source, "obs_source_enum_tree")) if (!data_valid(source, "obs_source_enum_active_tree"))
return; return;
if (!source->info.enum_sources) if (!source->info.enum_active_sources)
return; return;
obs_source_addref(source); obs_source_addref(source);
source->info.enum_sources(source->context.data, source->info.enum_active_sources(source->context.data,
enum_source_tree_callback, enum_source_tree_callback,
&data); &data);
@ -2644,20 +2647,21 @@ static void check_descendant(obs_source_t *parent, obs_source_t *child,
info->exists = true; info->exists = true;
} }
bool obs_source_add_child(obs_source_t *parent, obs_source_t *child) bool obs_source_add_active_child(obs_source_t *parent, obs_source_t *child)
{ {
struct descendant_info info = {false, parent}; struct descendant_info info = {false, parent};
if (!obs_ptr_valid(parent, "obs_source_add_child")) if (!obs_ptr_valid(parent, "obs_source_add_active_child"))
return false; return false;
if (!obs_ptr_valid(parent, "obs_source_add_child")) if (!obs_ptr_valid(child, "obs_source_add_active_child"))
return false; return false;
if (parent == child) { if (parent == child) {
blog(LOG_WARNING, "obs_source_add_child: parent == child"); blog(LOG_WARNING, "obs_source_add_active_child: "
"parent == child");
return false; return false;
} }
obs_source_enum_tree(child, check_descendant, &info); obs_source_enum_active_tree(child, check_descendant, &info);
if (info.exists) if (info.exists)
return false; return false;
@ -2670,11 +2674,11 @@ bool obs_source_add_child(obs_source_t *parent, obs_source_t *child)
return true; return true;
} }
void obs_source_remove_child(obs_source_t *parent, obs_source_t *child) void obs_source_remove_active_child(obs_source_t *parent, obs_source_t *child)
{ {
if (!obs_ptr_valid(parent, "obs_source_remove_child")) if (!obs_ptr_valid(parent, "obs_source_remove_active_child"))
return; return;
if (!obs_ptr_valid(parent, "obs_source_remove_child")) if (!obs_ptr_valid(child, "obs_source_remove_active_child"))
return; return;
for (int i = 0; i < parent->show_refs; i++) { for (int i = 0; i < parent->show_refs; i++) {
@ -2918,8 +2922,8 @@ float obs_source_get_target_volume(obs_source_t *source, obs_source_t *target)
if (source == target) if (source == target)
return 1.0f; return 1.0f;
if (source->info.enum_sources) { if (source->info.enum_active_sources) {
source->info.enum_sources(source->context.data, source->info.enum_active_sources(source->context.data,
transition ? transition ?
get_transition_child_vol : get_transition_child_vol :
get_source_base_vol, get_source_base_vol,

View File

@ -271,14 +271,15 @@ struct obs_source_info {
struct obs_audio_data *audio); struct obs_audio_data *audio);
/** /**
* Called to enumerate all sources being used within this source. * Called to enumerate all active sources being used within this
* If the source has children it must implement this callback. * source. If the source has children that render audio/video it must
* implement this callback.
* *
* @param data Filter data * @param data Filter data
* @param enum_callback Enumeration callback * @param enum_callback Enumeration callback
* @param param User data to pass to callback * @param param User data to pass to callback
*/ */
void (*enum_sources)(void *data, void (*enum_active_sources)(void *data,
obs_source_enum_proc_t enum_callback, obs_source_enum_proc_t enum_callback,
void *param); void *param);

View File

@ -773,13 +773,13 @@ EXPORT void obs_source_set_sync_offset(obs_source_t *source, int64_t offset);
/** Gets the audio sync offset (in nanoseconds) for a source */ /** Gets the audio sync offset (in nanoseconds) for a source */
EXPORT int64_t obs_source_get_sync_offset(const obs_source_t *source); EXPORT int64_t obs_source_get_sync_offset(const obs_source_t *source);
/** Enumerates child sources used by this source */ /** Enumerates active child sources used by this source */
EXPORT void obs_source_enum_sources(obs_source_t *source, EXPORT void obs_source_enum_active_sources(obs_source_t *source,
obs_source_enum_proc_t enum_callback, obs_source_enum_proc_t enum_callback,
void *param); void *param);
/** Enumerates the entire child source tree used by this source */ /** Enumerates the entire active child source tree used by this source */
EXPORT void obs_source_enum_tree(obs_source_t *source, EXPORT void obs_source_enum_active_tree(obs_source_t *source,
obs_source_enum_proc_t enum_callback, obs_source_enum_proc_t enum_callback,
void *param); void *param);
@ -953,20 +953,22 @@ EXPORT void obs_source_process_filter_end(obs_source_t *filter,
EXPORT void obs_source_skip_video_filter(obs_source_t *filter); EXPORT void obs_source_skip_video_filter(obs_source_t *filter);
/** /**
* Adds a child source. Must be called by parent sources on child sources * Adds an active child source. Must be called by parent sources on child
* when the child is added. This ensures that the source is properly activated * sources when the child is added and active. This ensures that the source is
* if the parent is active. * properly activated if the parent is active.
* *
* @returns true if source can be added, false if it causes recursion * @returns true if source can be added, false if it causes recursion
*/ */
EXPORT bool obs_source_add_child(obs_source_t *parent, obs_source_t *child); EXPORT bool obs_source_add_active_child(obs_source_t *parent,
obs_source_t *child);
/** /**
* Removes a child source. Must be called by parent sources on child sources * Removes an active child source. Must be called by parent sources on child
* when the child is removed. This ensures that the source is properly * sources when the child is removed or inactive. This ensures that the source
* deactivated if the parent is active. * is properly deactivated if the parent is no longer active.
*/ */
EXPORT void obs_source_remove_child(obs_source_t *parent, obs_source_t *child); EXPORT void obs_source_remove_active_child(obs_source_t *parent,
obs_source_t *child);
/** Sends a mouse down/up event to a source */ /** Sends a mouse down/up event to a source */
EXPORT void obs_source_send_mouse_click(obs_source_t *source, EXPORT void obs_source_send_mouse_click(obs_source_t *source,