--- man/pactl.1.xml.in | 2 +- src/utils/pactl.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/man/pactl.1.xml.in b/man/pactl.1.xml.in index e444f973..d0d80ab9 100644 --- a/man/pactl.1.xml.in +++ b/man/pactl.1.xml.in @@ -254,7 +254,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. <option> <p><opt>subscribe</opt></p> - <optdesc><p>Subscribe to events, pactl does not exit by itself, but keeps waiting for new events.</p></optdesc> + <optdesc><p>Subscribe to events and signals, pactl does not exit by itself, but keeps waiting for new events.</p></optdesc> </option> </section> diff --git a/src/utils/pactl.c b/src/utils/pactl.c index c7dc57ac..d4d95fb2 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -1232,6 +1232,17 @@ static void context_subscribe_callback(pa_context *c, pa_subscription_event_type fflush(stdout); } +static void context_signal_callback(pa_context *c, const char *sender, const char *signal, const char *signal_parameters, void *userdata) { + pa_assert(c); + + printf(_("Signal '%s' from %s\n"), + signal, + sender); + if (signal_parameters) + printf(_("Signal parameters: '%s'\n"), signal_parameters); + fflush(stdout); +} + static void context_state_callback(pa_context *c, void *userdata) { pa_operation *o = NULL; @@ -1479,6 +1490,15 @@ static void context_state_callback(pa_context *c, void *userdata) { PA_SUBSCRIPTION_MASK_CARD, NULL, NULL); + if (o) { + pa_operation_unref(o); + actions++; + } + + pa_context_set_signal_callback(c, context_signal_callback, NULL); + + o = pa_context_subscribe_signals(c, (uint64_t) -1, NULL, NULL); + break; default: -- 2.14.1 _______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss