mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
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:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user