diff --git a/src/pipewire/filter.c b/src/pipewire/filter.c index 4bfcba85c..c366d310c 100644 --- a/src/pipewire/filter.c +++ b/src/pipewire/filter.c @@ -1104,7 +1104,8 @@ void pw_filter_destroy(struct pw_filter *filter) pw_filter_emit_destroy(filter); - pw_filter_disconnect(filter); + if (!impl->disconnecting) + pw_filter_disconnect(filter); spa_list_consume(p, &impl->port_list, link) pw_filter_remove_port(p->user_data); diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 0e062121f..c03c3b328 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1258,7 +1258,8 @@ void pw_stream_destroy(struct pw_stream *stream) pw_stream_emit_destroy(stream); - pw_stream_disconnect(stream); + if (!impl->disconnecting) + pw_stream_disconnect(stream); if (stream->core) { spa_hook_remove(&stream->core_listener);