libobs: Add obs_source_info.filter_add

If there is filter_remove, it is reasonable to expect that there is also
filter_add. filter_add also enables filters to attach signal handlers
on the parent, and disconnect them in filter_remove.
This commit is contained in:
CodeYan01
2023-07-29 16:15:21 -07:00
committed by Lain
parent 51887595f8
commit a494cf5ce4
3 changed files with 22 additions and 1 deletions
+4
View File
@@ -3132,6 +3132,10 @@ void obs_source_filter_add(obs_source_t *source, obs_source_t *filter)
blog(LOG_DEBUG, "- filter '%s' (%s) added to source '%s'",
filter->context.name, filter->info.id, source->context.name);
if (filter->info.filter_add)
filter->info.filter_add(filter->context.data,
filter->filter_parent);
}
static bool obs_source_filter_remove_refless(obs_source_t *source,
+8
View File
@@ -552,6 +552,14 @@ struct obs_source_info {
enum gs_color_space (*video_get_color_space)(
void *data, size_t count,
const enum gs_color_space *preferred_spaces);
/**
* Called when the filter is added to a source
*
* @param data Filter data
* @param source Source that the filter is being added to
*/
void (*filter_add)(void *data, obs_source_t *source);
};
EXPORT void obs_register_source_s(const struct obs_source_info *info,