diff --git a/src/modules/module-session-manager/endpoint-link.c b/src/modules/module-session-manager/endpoint-link.c index d3cc9dff6..c1940c5e4 100644 --- a/src/modules/module-session-manager/endpoint-link.c +++ b/src/modules/module-session-manager/endpoint-link.c @@ -221,6 +221,7 @@ static void global_destroy(void *data) impl->global = NULL; if (impl->resource) pw_resource_destroy(impl->resource); + free(impl); } static const struct pw_global_events global_events = { @@ -234,6 +235,7 @@ static void impl_resource_destroy(void *data) struct param_data *pdata, *tmp; spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->link_listener); impl->resource = NULL; /* clear cache */ diff --git a/src/modules/module-session-manager/endpoint-stream.c b/src/modules/module-session-manager/endpoint-stream.c index 967f9bab3..3d71cba83 100644 --- a/src/modules/module-session-manager/endpoint-stream.c +++ b/src/modules/module-session-manager/endpoint-stream.c @@ -212,6 +212,7 @@ static void global_destroy(void *data) impl->global = NULL; if (impl->resource) pw_resource_destroy(impl->resource); + free(impl); } static const struct pw_global_events global_events = { @@ -225,6 +226,7 @@ static void impl_resource_destroy(void *data) struct param_data *pdata, *tmp; spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->stream_listener); impl->resource = NULL; /* clear cache */ diff --git a/src/modules/module-session-manager/endpoint.c b/src/modules/module-session-manager/endpoint.c index a8683d13c..090933373 100644 --- a/src/modules/module-session-manager/endpoint.c +++ b/src/modules/module-session-manager/endpoint.c @@ -221,6 +221,7 @@ static void global_destroy(void *data) impl->global = NULL; if (impl->resource) pw_resource_destroy(impl->resource); + free(impl); } static const struct pw_global_events global_events = { @@ -234,6 +235,7 @@ static void impl_resource_destroy(void *data) struct param_data *pdata, *tmp; spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->endpoint_listener); impl->resource = NULL; /* clear cache */