From 1e381fbffc190fdede27d6f27a2d113daf3e791d Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Fri, 25 Mar 2011 23:43:26 +0000 Subject: [PATCH] dbus: Do not refcnt the core. We should not call pa_core_ref() anywhere in the code. Doing so will prevent proper daemon shutdown as the only call (in daemon/main.c) to pa_core_unref() should always call free_core() and perform a normal shutdown (i.e. unload all modules gracefully). --- src/modules/dbus/iface-core.c | 3 +-- src/modules/dbus/iface-memstats.c | 3 +-- src/pulsecore/protocol-dbus.c | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/modules/dbus/iface-core.c b/src/modules/dbus/iface-core.c index 268a87e..bb43df9 100644 --- a/src/modules/dbus/iface-core.c +++ b/src/modules/dbus/iface-core.c @@ -1975,7 +1975,7 @@ pa_dbusiface_core *pa_dbusiface_core_new(pa_core *core) { pa_assert(core); c = pa_xnew(pa_dbusiface_core, 1); - c->core = pa_core_ref(core); + c->core = core; c->subscription = pa_subscription_new(core, PA_SUBSCRIPTION_MASK_ALL, subscription_cb, c); c->dbus_protocol = pa_dbus_protocol_get(core); c->cards = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); @@ -2124,7 +2124,6 @@ void pa_dbusiface_core_free(pa_dbusiface_core *c) { pa_source_unref(c->fallback_source); pa_dbus_protocol_unref(c->dbus_protocol); - pa_core_unref(c->core); pa_xfree(c); } diff --git a/src/modules/dbus/iface-memstats.c b/src/modules/dbus/iface-memstats.c index 73a84be..4cd692d 100644 --- a/src/modules/dbus/iface-memstats.c +++ b/src/modules/dbus/iface-memstats.c @@ -202,7 +202,7 @@ pa_dbusiface_memstats *pa_dbusiface_memstats_new(pa_dbusiface_core *dbus_core, p pa_assert(core); m = pa_xnew(pa_dbusiface_memstats, 1); - m->core = pa_core_ref(core); + m->core = core; m->path = pa_sprintf_malloc("%s/%s", PA_DBUS_CORE_OBJECT_PATH, OBJECT_NAME); m->dbus_protocol = pa_dbus_protocol_get(core); @@ -219,7 +219,6 @@ void pa_dbusiface_memstats_free(pa_dbusiface_memstats *m) { pa_xfree(m->path); pa_dbus_protocol_unref(m->dbus_protocol); - pa_core_unref(m->core); pa_xfree(m); } diff --git a/src/pulsecore/protocol-dbus.c b/src/pulsecore/protocol-dbus.c index 13c05d9..c329915 100644 --- a/src/pulsecore/protocol-dbus.c +++ b/src/pulsecore/protocol-dbus.c @@ -125,7 +125,7 @@ static pa_dbus_protocol *dbus_protocol_new(pa_core *c) { p = pa_xnew(pa_dbus_protocol, 1); PA_REFCNT_INIT(p); - p->core = pa_core_ref(c); + p->core = c; p->objects = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); p->connections = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); p->extensions = pa_idxset_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); @@ -178,8 +178,6 @@ void pa_dbus_protocol_unref(pa_dbus_protocol *p) { pa_assert_se(pa_shared_remove(p->core, "dbus-protocol") >= 0); - pa_core_unref(p->core); - pa_xfree(p); } -- 2.7.4