summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/sink-input.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-02-12 03:18:05 +0100
committerLennart Poettering <lennart@poettering.net>2009-02-12 03:18:05 +0100
commit823431e44732a0824658c82de29aaa92f8f39f79 (patch)
treebdad5ae9f4e0f47221905ccedf0c192c09c86aaf /src/pulsecore/sink-input.c
parent4bd9737725b85d90a7cf12b82528c2de70a7fbfe (diff)
allow sending meta/policy events to clients
Diffstat (limited to 'src/pulsecore/sink-input.c')
-rw-r--r--src/pulsecore/sink-input.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 9c0bf76a..22419ee5 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -122,6 +122,7 @@ static void reset_callbacks(pa_sink_input *i) {
i->get_latency = NULL;
i->state_change = NULL;
i->may_move_to = NULL;
+ i->send_event = NULL;
}
/* Called from main context */
@@ -1446,3 +1447,31 @@ pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret) {
return ret;
}
+
+/* Called from main context */
+void pa_sink_input_send_event(pa_sink_input *i, const char *event, pa_proplist *data) {
+ pa_proplist *pl = NULL;
+ pa_sink_input_send_event_hook_data hook_data;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert(event);
+
+ if (!i->send_event)
+ return;
+
+ if (!data)
+ data = pl = pa_proplist_new();
+
+ hook_data.sink_input = i;
+ hook_data.data = data;
+ hook_data.event = event;
+
+ if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SEND_EVENT], &hook_data) < 0)
+ goto finish;
+
+ i->send_event(i, event, data);
+
+finish:
+ if (pl)
+ pa_proplist_free(pl);
+}