From d86e462dcaf251131bf7176f493eb6e141549f45 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 14 Aug 2019 11:45:28 +0200 Subject: [PATCH] client-node: clean up buffers and other memory --- src/modules/module-client-node/client-node.c | 1 + src/modules/module-client-node/remote-node.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index 39589bcdf..f08ada5c1 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -1329,6 +1329,7 @@ static int port_release_mix(void *data, struct pw_port_mix *mix) if ((m = find_mix(port, mix->port.port_id)) == NULL || !m->valid) return -EINVAL; + clear_buffers(this, m); pw_map_remove(&impl->io_map, mix->id); m->valid = false; diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index ae649f5dc..1e18fcfab 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -121,6 +121,8 @@ static void clear_link(struct node_data *data, struct link *link) static void clean_transport(struct node_data *data) { struct link *l; + uint32_t tag[5] = { data->remote_id, }; + struct pw_memmap *mm; if (!data->have_transport) return; @@ -131,6 +133,9 @@ static void clean_transport(struct node_data *data) } pw_array_clear(&data->links); + while ((mm = pw_mempool_find_tag(data->remote->pool, tag, sizeof(uint32_t))) != NULL) + pw_memmap_free(mm); + pw_memmap_free(data->activation); close(data->rtwritefd); data->remote_id = SPA_ID_INVALID;