diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 02cbb1f47..663b0a30b 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -788,6 +788,7 @@ static void proxy_destroy(void *_data) { struct pw_stream *stream = _data; stream->proxy = NULL; + spa_hook_remove(&stream->proxy_listener); stream_set_state(stream, PW_STREAM_STATE_UNCONNECTED, NULL); } @@ -1148,7 +1149,10 @@ int pw_stream_disconnect(struct pw_stream *stream) pw_node_destroy(impl->node); impl->node = NULL; } - stream->proxy = NULL; + if (stream->proxy) { + stream->proxy = NULL; + spa_hook_remove(&stream->proxy_listener); + } stream_set_state(stream, PW_STREAM_STATE_UNCONNECTED, NULL); return 0; }