From 4756d186ab461322470a57b0f1e8ca5fdd4eb6fb Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 27 Feb 2006 09:20:25 +0000 Subject: We have both sink and source in this module. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@613 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-solaris.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c index 12d6719e..9f93f9d8 100644 --- a/src/modules/module-solaris.c +++ b/src/modules/module-solaris.c @@ -221,17 +221,32 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void struct userdata *u = userdata; pa_cvolume old_vol; - assert(u && u->sink && u->sink->get_hw_volume); + assert(u); do_write(u); - memcpy(&old_vol, &u->sink->hw_volume, sizeof(pa_cvolume)); - if (u->sink->get_hw_volume(u->sink) < 0) - return; - if (memcmp(&old_vol, &u->sink->hw_volume, sizeof(pa_cvolume)) != 0) { - pa_subscription_post(u->sink->core, - PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, - u->sink->index); + if (u->sink) { + assert(u->sink->get_hw_volume); + memcpy(&old_vol, &u->sink->hw_volume, sizeof(pa_cvolume)); + if (u->sink->get_hw_volume(u->sink) < 0) + return; + if (memcmp(&old_vol, &u->sink->hw_volume, sizeof(pa_cvolume)) != 0) { + pa_subscription_post(u->sink->core, + PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, + u->sink->index); + } + } + + if (u->source) { + assert(u->source->get_hw_volume); + memcpy(&old_vol, &u->source->hw_volume, sizeof(pa_cvolume)); + if (u->source->get_hw_volume(u->source) < 0) + return; + if (memcmp(&old_vol, &u->source->hw_volume, sizeof(pa_cvolume)) != 0) { + pa_subscription_post(u->source->core, + PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, + u->source->index); + } } } -- cgit