summaryrefslogtreecommitdiffstats
path: root/src/pulsecore
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-08-13 17:33:32 +0000
committerLennart Poettering <lennart@poettering.net>2006-08-13 17:33:32 +0000
commit818083289882e8739bbfaefd1edb252ed5629771 (patch)
treeaaffbae489ea2b91bfacd67126c2bb8dcd13b605 /src/pulsecore
parent87e64d58454f73bfa1e979b0fedfea7e0827d845 (diff)
properly implement a pa_sink_disconnect() hook
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1243 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/pulsecore')
-rw-r--r--src/pulsecore/core.c4
-rw-r--r--src/pulsecore/core.h3
-rw-r--r--src/pulsecore/sink.c4
3 files changed, 7 insertions, 4 deletions
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);
}