From a3ce0f3e28d9884a3be90021b7c7fde9e9182440 Mon Sep 17 00:00:00 2001 From: hackerman-kl Date: Fri, 28 Nov 2025 08:56:25 +0100 Subject: [PATCH] module-avb: avdecc: destroy stream --- src/modules/module-avb/avdecc.c | 1 + src/modules/module-avb/stream.c | 8 ++++++++ src/modules/module-avb/stream.h | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/src/modules/module-avb/avdecc.c b/src/modules/module-avb/avdecc.c index d4ede6e27..9885b6c01 100644 --- a/src/modules/module-avb/avdecc.c +++ b/src/modules/module-avb/avdecc.c @@ -311,6 +311,7 @@ void avdecc_server_free(struct server *server) { struct impl *impl = server->impl; + stream_destroy_all(server); spa_list_remove(&server->link); if (server->source) pw_loop_destroy_source(impl->loop, server->source); diff --git a/src/modules/module-avb/stream.c b/src/modules/module-avb/stream.c index f7101bdf0..89e5a420c 100644 --- a/src/modules/module-avb/stream.c +++ b/src/modules/module-avb/stream.c @@ -346,6 +346,14 @@ void stream_destroy(struct stream *stream) avb_mrp_attribute_destroy(stream->listener_attr->mrp); } +void stream_destroy_all(struct server *server) +{ + struct stream *s, *t; + spa_list_for_each_safe(s, t, &server->streams, link) { + stream_destroy(s); + } +} + static int setup_socket(struct stream *stream) { struct server *server = stream->server; diff --git a/src/modules/module-avb/stream.h b/src/modules/module-avb/stream.h index f650cc216..c76a09380 100644 --- a/src/modules/module-avb/stream.h +++ b/src/modules/module-avb/stream.h @@ -76,6 +76,12 @@ struct stream *server_create_stream(struct server *server, struct stream *stream void stream_destroy(struct stream *stream); +/** + * \brief unregister MRP attribute for the stream + * and free the allocated resources for the stream. + */ +void stream_destroy_all(struct server *server); + int stream_activate(struct stream *stream, uint16_t index, uint64_t now); int stream_deactivate(struct stream *stream, uint64_t now);