diff --git a/src/pipewire/filter.c b/src/pipewire/filter.c index 541732e12..64f923cf0 100644 --- a/src/pipewire/filter.c +++ b/src/pipewire/filter.c @@ -1078,6 +1078,7 @@ SPA_EXPORT void pw_filter_destroy(struct pw_filter *filter) { struct filter *impl = SPA_CONTAINER_OF(filter, struct filter, this); + struct port *p; pw_log_debug(NAME" %p: destroy", filter); @@ -1085,6 +1086,9 @@ void pw_filter_destroy(struct pw_filter *filter) pw_filter_disconnect(filter); + spa_list_consume(p, &impl->port_list, link) + pw_filter_remove_port(p->user_data); + if (filter->core) { spa_hook_remove(&filter->core_listener); spa_list_remove(&filter->link);