From 818083289882e8739bbfaefd1edb252ed5629771 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 13 Aug 2006 17:33:32 +0000 Subject: properly implement a pa_sink_disconnect() hook git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1243 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/pulsecore/core.c | 4 ++-- src/pulsecore/core.h | 3 ++- src/pulsecore/sink.c | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src/pulsecore') diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c index 24f835f7..50d79fbf 100644 --- a/src/pulsecore/core.c +++ b/src/pulsecore/core.c @@ -93,7 +93,7 @@ pa_core* pa_core_new(pa_mainloop_api *m) { c->is_system_instance = 0; pa_hook_init(&c->hook_sink_input_new, c); - pa_hook_init(&c->hook_sink_input_disconnect, c); + pa_hook_init(&c->hook_sink_disconnect, c); pa_property_init(c); @@ -142,7 +142,7 @@ void pa_core_free(pa_core *c) { pa_property_cleanup(c); pa_hook_free(&c->hook_sink_input_new); - pa_hook_free(&c->hook_sink_input_disconnect); + pa_hook_free(&c->hook_sink_disconnect); pa_xfree(c); } diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h index fd92de61..22dec50c 100644 --- a/src/pulsecore/core.h +++ b/src/pulsecore/core.h @@ -81,7 +81,8 @@ struct pa_core { int is_system_instance; /* hooks */ - pa_hook hook_sink_input_new, hook_sink_input_disconnect; + pa_hook hook_sink_input_new, + hook_sink_disconnect; }; pa_core* pa_core_new(pa_mainloop_api *m); diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index e770950c..557d5efc 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -143,7 +143,10 @@ void pa_sink_disconnect(pa_sink* s) { assert(s); assert(s->state == PA_SINK_RUNNING); + s->state = PA_SINK_DISCONNECTED; pa_namereg_unregister(s->core, s->name); + + pa_hook_fire(&s->core->hook_sink_disconnect, s); while ((i = pa_idxset_first(s->inputs, NULL))) { assert(i != j); @@ -163,7 +166,6 @@ void pa_sink_disconnect(pa_sink* s) { s->set_hw_mute = NULL; s->get_hw_mute = NULL; - s->state = PA_SINK_DISCONNECTED; pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK | PA_SUBSCRIPTION_EVENT_REMOVE, s->index); } -- cgit