Skip to content
Snippets Groups Projects
Commit 0a04814d authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#1962] Subscribe to pulseaudio events

parent eee8d6b0
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,23 @@ ...@@ -23,6 +23,23 @@
int framesPerBuffer = 2048; int framesPerBuffer = 2048;
/*
PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
*/
static void playback_callback (pa_stream* s, size_t bytes, void* userdata) static void playback_callback (pa_stream* s, size_t bytes, void* userdata)
{ {
...@@ -50,6 +67,73 @@ static void ringtone_callback (pa_stream* s, size_t bytes, void* userdata) ...@@ -50,6 +67,73 @@ static void ringtone_callback (pa_stream* s, size_t bytes, void* userdata)
} }
/*
PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
*/
static void stream_changed_callback(pa_context* s, pa_subscription_event_type_t t, uint32_t idx, void* userdata)
{
switch(t) {
case PA_SUBSCRIPTION_EVENT_SINK:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SINK");
break;
case PA_SUBSCRIPTION_EVENT_SOURCE:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SOURCE");
break;
case PA_SUBSCRIPTION_EVENT_SINK_INPUT:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SINK_INPUT");
break;
case PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT");
break;
case PA_SUBSCRIPTION_EVENT_MODULE:
_debug("Audio: PA_SUBSCRIPTION_EVENT_MODULE");
break;
case PA_SUBSCRIPTION_EVENT_CLIENT:
_debug("Audio: PA_SUBSCRIPTION_EVENT_CLIENT");
break;
case PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE");
break;
case PA_SUBSCRIPTION_EVENT_SERVER:
_debug("Audio: PA_SUBSCRIPTION_EVENT_SERVER");
break;
case PA_SUBSCRIPTION_EVENT_CARD:
_debug("Audio: PA_SUBSCRIPTION_EVENT_CARD");
break;
case PA_SUBSCRIPTION_EVENT_FACILITY_MASK:
_debug("Audio: PA_SUBSCRIPTION_EVENT_FACILITY_MASK");
break;
case PA_SUBSCRIPTION_EVENT_CHANGE:
_debug("Audio: PA_SUBSCRIPTION_EVENT_CHANGE");
break;
case PA_SUBSCRIPTION_EVENT_REMOVE:
_debug("Audio: PA_SUBSCRIPTION_EVENT_REMOVE");
break;
case PA_SUBSCRIPTION_EVENT_TYPE_MASK:
_debug("Audio: PA_SUBSCRIPTION_EVENT_TYPE_MASK");
break;
default:
_debug("Audio: Unknown event type");
}
}
/* /*
static void stream_suspended_callback (pa_stream *s UNUSED, void *userdata UNUSED) static void stream_suspended_callback (pa_stream *s UNUSED, void *userdata UNUSED)
{ {
...@@ -300,6 +384,9 @@ bool PulseLayer::createStreams (pa_context* c) ...@@ -300,6 +384,9 @@ bool PulseLayer::createStreams (pa_context* c)
pa_stream_set_write_callback(ringtone->pulseStream(), ringtone_callback, this); pa_stream_set_write_callback(ringtone->pulseStream(), ringtone_callback, this);
delete ringtoneParam; delete ringtoneParam;
pa_context_subscribe (c, PA_SUBSCRIPTION_MASK_SINK, NULL, this);
pa_context_set_subscribe_callback (c, stream_changed_callback, this);
pa_threaded_mainloop_signal (m , 0); pa_threaded_mainloop_signal (m , 0);
flushMain(); flushMain();
...@@ -683,7 +770,7 @@ void PulseLayer::ringtoneToSpeaker(void) ...@@ -683,7 +770,7 @@ void PulseLayer::ringtoneToSpeaker(void)
int writableSize = pa_stream_writable_size(ringtone->pulseStream()); int writableSize = pa_stream_writable_size(ringtone->pulseStream());
_debug("writable size: %d", writableSize); // _debug("writable size: %d", writableSize);
if (file_tone) { if (file_tone) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment