diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index ce1037776..31a46f66c 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -339,6 +339,9 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size) if (impl->this.flags & 1) return 0; + if ((mm = pw_mempool_find_tag(this->client->pool, tag, sizeof(tag))) != NULL) + pw_memmap_free(mm); + if (data) { mm = pw_mempool_import_map(this->client->pool, impl->core->pool, data, size, tag); @@ -350,9 +353,6 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size) mem_size = size; } else { - if ((mm = pw_mempool_find_tag(this->client->pool, tag, sizeof(tag))) != NULL) - pw_memmap_free(mm); - memid = SPA_ID_INVALID; mem_offset = mem_size = 0; } @@ -652,6 +652,9 @@ static int do_port_set_io(struct impl *impl, if ((mix = find_mix(port, mix_id)) == NULL || !mix->valid) return -EINVAL; + if ((mm = pw_mempool_find_tag(this->client->pool, tag, sizeof(tag))) != NULL) + pw_memmap_free(mm); + if (data) { mm = pw_mempool_import_map(this->client->pool, impl->core->pool, data, size, tag); @@ -663,9 +666,6 @@ static int do_port_set_io(struct impl *impl, mem_size = size; } else { - if ((mm = pw_mempool_find_tag(this->client->pool, tag, sizeof(tag))) != NULL) - pw_memmap_free(mm); - memid = SPA_ID_INVALID; mem_offset = mem_size = 0; } diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index ec522b0a0..ae649f5dc 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -403,9 +403,10 @@ client_node_set_io(void *object, void *ptr; uint32_t tag[5] = { data->remote_id, id, }; + if ((mm = pw_mempool_find_tag(data->remote->pool, tag, sizeof(tag))) != NULL) + pw_memmap_free(mm); + if (memid == SPA_ID_INVALID) { - if ((mm = pw_mempool_find_tag(data->remote->pool, tag, sizeof(tag))) != NULL) - pw_memmap_free(mm); mm = ptr = NULL; size = 0; } @@ -715,10 +716,10 @@ client_node_port_set_io(void *object, goto error_exit; } - if (memid == SPA_ID_INVALID) { - if ((mm = pw_mempool_find_tag(data->remote->pool, tag, sizeof(tag))) != NULL) - pw_memmap_free(mm); + if ((mm = pw_mempool_find_tag(data->remote->pool, tag, sizeof(tag))) != NULL) + pw_memmap_free(mm); + if (memid == SPA_ID_INVALID) { mm = ptr = NULL; size = 0; }