From 6f5b0897678864ca686c15bdd0dc1cba23ac8167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Thu, 10 Jun 2021 18:31:50 +0200 Subject: [PATCH] pulse-server: clear hook list when module is freed Moreover, rename the hook list to "listener_list". --- src/modules/module-protocol-pulse/module.c | 10 +++++++--- src/modules/module-protocol-pulse/module.h | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/modules/module-protocol-pulse/module.c b/src/modules/module-protocol-pulse/module.c index 8c0d64f76..74a89b67e 100644 --- a/src/modules/module-protocol-pulse/module.c +++ b/src/modules/module-protocol-pulse/module.c @@ -51,7 +51,7 @@ struct module *module_new(struct impl *impl, const struct module_methods *method module->impl = impl; module->methods = methods; - spa_hook_list_init(&module->hooks); + spa_hook_list_init(&module->listener_list); module->user_data = SPA_PTROFF(module, sizeof(struct module), void); return module; @@ -61,7 +61,7 @@ static void module_add_listener(struct module *module, struct spa_hook *listener, const struct module_events *events, void *data) { - spa_hook_list_append(&module->hooks, listener, events, data); + spa_hook_list_append(&module->listener_list, listener, events, data); } static int module_load(struct client *client, struct module *module) @@ -77,13 +77,17 @@ static int module_load(struct client *client, struct module *module) static void module_free(struct module *module) { struct impl *impl = module->impl; + if (module->idx != SPA_ID_INVALID) pw_map_remove(&impl->modules, module->idx & INDEX_MASK); + spa_hook_list_clean(&module->listener_list); pw_work_queue_cancel(impl->work_queue, module, SPA_ID_INVALID); + pw_properties_free(module->props); + free((char*)module->name); free((char*)module->args); - pw_properties_free(module->props); + free(module); } diff --git a/src/modules/module-protocol-pulse/module.h b/src/modules/module-protocol-pulse/module.h index f950db3fa..916be27ab 100644 --- a/src/modules/module-protocol-pulse/module.h +++ b/src/modules/module-protocol-pulse/module.h @@ -44,7 +44,7 @@ struct module_events { void (*loaded) (void *data, int res); }; -#define module_emit_loaded(m,r) spa_hook_list_call(&m->hooks, struct module_events, loaded, 0, r) +#define module_emit_loaded(m,r) spa_hook_list_call(&m->listener_list, struct module_events, loaded, 0, r) struct module_methods { #define VERSION_MODULE_METHODS 0 @@ -61,7 +61,7 @@ struct module { struct pw_properties *props; struct impl *impl; const struct module_methods *methods; - struct spa_hook_list hooks; + struct spa_hook_list listener_list; void *user_data; };