From 3eec3f5abf9cd7a682347f2b524f21ff70145d5a Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 13 Dec 2019 11:00:41 +0100 Subject: [PATCH] proxy: don't remove ourselves from a destroyed core The core will clear (or have cleared) all the proxies. --- src/pipewire/core.c | 7 +++---- src/pipewire/proxy.c | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pipewire/core.c b/src/pipewire/core.c index 84a15facf..ea660995f 100644 --- a/src/pipewire/core.c +++ b/src/pipewire/core.c @@ -172,7 +172,6 @@ static int destroy_proxy(void *object, void *data) if (object == NULL) return 0; - p->core = NULL; if (object != core) pw_proxy_remove(p); @@ -198,9 +197,6 @@ static void proxy_core_destroy(void *data) spa_list_for_each_safe(filter, f2, &core->filter_list, link) pw_filter_disconnect(filter); - pw_protocol_client_disconnect(core->conn); - core->client = NULL; - pw_map_for_each(&core->objects, destroy_proxy, core); pw_map_reset(&core->objects); @@ -209,6 +205,9 @@ static void proxy_core_destroy(void *data) spa_list_consume(filter, &core->filter_list, link) pw_filter_destroy(filter); + pw_protocol_client_disconnect(core->conn); + core->client = NULL; + pw_mempool_destroy(core->pool); pw_protocol_client_destroy(core->conn); diff --git a/src/pipewire/proxy.c b/src/pipewire/proxy.c index 037fa6580..5d4e81517 100644 --- a/src/pipewire/proxy.c +++ b/src/pipewire/proxy.c @@ -229,7 +229,7 @@ void pw_proxy_destroy(struct pw_proxy *proxy) } } if (proxy->removed) { - if (proxy->core) + if (proxy->core && !proxy->core->destroyed) pw_map_remove(&proxy->core->objects, proxy->id); pw_proxy_unref(proxy);