From ed9d4e5e8045c2d722a483eca549689d004062c3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 5 Dec 2019 11:50:00 +0100 Subject: [PATCH] mem: add method to clear pool --- src/pipewire/mem.c | 15 +++++++++++---- src/pipewire/mem.h | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/pipewire/mem.c b/src/pipewire/mem.c index 31e9f6d76..4433af7d8 100644 --- a/src/pipewire/mem.c +++ b/src/pipewire/mem.c @@ -155,19 +155,26 @@ struct pw_mempool *pw_mempool_new(struct pw_properties *props) return this; } -void pw_mempool_destroy(struct pw_mempool *pool) +void pw_mempool_clear(struct pw_mempool *pool) { struct mempool *impl = SPA_CONTAINER_OF(pool, struct mempool, this); struct memblock *b; + spa_list_consume(b, &impl->blocks, link) + pw_memblock_free(&b->this); +} + +void pw_mempool_destroy(struct pw_mempool *pool) +{ + struct mempool *impl = SPA_CONTAINER_OF(pool, struct mempool, this); + pw_log_debug(NAME" %p: destroy", pool); pw_mempool_emit_destroy(impl); - spa_list_remove(&impl->link); + pw_mempool_clear(pool); - spa_list_consume(b, &impl->blocks, link) - pw_memblock_free(&b->this); + spa_list_remove(&impl->link); pw_map_clear(&impl->map); if (pool->props) diff --git a/src/pipewire/mem.h b/src/pipewire/mem.h index 5d3946780..433b2c7bc 100644 --- a/src/pipewire/mem.h +++ b/src/pipewire/mem.h @@ -105,7 +105,10 @@ void pw_mempool_add_listener(struct pw_mempool *pool, const struct pw_mempool_events *events, void *data); -/** Destroy a pool */ +/** Clear a pool */ +void pw_mempool_clear(struct pw_mempool *pool); + +/** Clear and destroy a pool */ void pw_mempool_destroy(struct pw_mempool *pool);