]> code.delx.au - pulseaudio/commitdiff
sink, source: Send notifications when flags change
authorTanu Kaskinen <tanuk@iki.fi>
Thu, 28 Mar 2013 15:30:16 +0000 (17:30 +0200)
committerTanu Kaskinen <tanuk@iki.fi>
Wed, 10 Apr 2013 13:30:03 +0000 (16:30 +0300)
The hooks aren't currently used, but for example, the D-Bus protocol
could use them if it implemented flag change signals.

src/pulsecore/core.h
src/pulsecore/sink.c
src/pulsecore/source.c

index 533ba9e98bc41401879447e47c7da5ddea98c1b0..a8cff5c0722b3342f6d696637819c7aef20de07d 100644 (file)
@@ -74,6 +74,7 @@ typedef enum pa_core_hook {
     PA_CORE_HOOK_SINK_STATE_CHANGED,
     PA_CORE_HOOK_SINK_PROPLIST_CHANGED,
     PA_CORE_HOOK_SINK_PORT_CHANGED,
+    PA_CORE_HOOK_SINK_FLAGS_CHANGED,
     PA_CORE_HOOK_SOURCE_NEW,
     PA_CORE_HOOK_SOURCE_FIXATE,
     PA_CORE_HOOK_SOURCE_PUT,
@@ -82,6 +83,7 @@ typedef enum pa_core_hook {
     PA_CORE_HOOK_SOURCE_STATE_CHANGED,
     PA_CORE_HOOK_SOURCE_PROPLIST_CHANGED,
     PA_CORE_HOOK_SOURCE_PORT_CHANGED,
+    PA_CORE_HOOK_SOURCE_FLAGS_CHANGED,
     PA_CORE_HOOK_SINK_INPUT_NEW,
     PA_CORE_HOOK_SINK_INPUT_FIXATE,
     PA_CORE_HOOK_SINK_INPUT_PUT,
index f5d4dbc6f30b2e14dce3eb38aadb7f3d2418d91c..9b4b066c2490f702affa11a3e9f2841d69f0ce61 100644 (file)
@@ -784,6 +784,9 @@ void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t valu
         pa_log_debug("Sink %s: DYNAMIC_LATENCY flag %s.",
                      s->name, (s->flags & PA_SINK_DYNAMIC_LATENCY) ? "enabled" : "disabled");
 
+    pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK | PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+    pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SINK_FLAGS_CHANGED], s);
+
     if (s->monitor_source)
         pa_source_update_flags(s->monitor_source,
                                ((mask & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
index 6724c4bba64b6ef4a72a73e162ea693286deed5b..c6aa5e3ada5bef5a1679ddbaf4f460a20ae6bffc 100644 (file)
@@ -710,6 +710,9 @@ void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flag
         pa_log_debug("Source %s: DYNAMIC_LATENCY flag %s.",
                      s->name, (s->flags & PA_SOURCE_DYNAMIC_LATENCY) ? "enabled" : "disabled");
 
+    pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE | PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+    pa_hook_fire(&s->core->hooks[PA_CORE_HOOK_SOURCE_FLAGS_CHANGED], s);
+
     PA_IDXSET_FOREACH(output, s->outputs, idx) {
         if (output->destination_source)
             pa_source_update_flags(output->destination_source, mask, value);