From: Tanu Kaskinen Date: Fri, 4 Mar 2016 13:23:27 +0000 (+0200) Subject: switch-on-port-available: unify input/output switching policy X-Git-Tag: v8.99.1~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe4f96d56ee2e8818790b3d562a22d26192591c7;p=platform%2Fupstream%2Fpulseaudio.git switch-on-port-available: unify input/output switching policy I don't think there's any reason why the same logic that has previously added to output profile switching shouldn't be used with input too. --- diff --git a/src/modules/module-switch-on-port-available.c b/src/modules/module-switch-on-port-available.c index 6f4c895..e5e1e9d 100644 --- a/src/modules/module-switch-on-port-available.c +++ b/src/modules/module-switch-on-port-available.c @@ -56,7 +56,10 @@ static bool profile_good_for_output(pa_card_profile *profile, unsigned prio) { return true; } -static bool profile_good_for_input(pa_card_profile *profile) { +static bool profile_good_for_input(pa_card_profile *profile, unsigned prio) { + pa_source *source; + uint32_t idx; + pa_assert(profile); if (!pa_safe_streq(profile->card->active_profile->output_name, profile->output_name)) @@ -68,6 +71,14 @@ static bool profile_good_for_input(pa_card_profile *profile) { if (profile->card->active_profile->max_sink_channels != profile->max_sink_channels) return false; + PA_IDXSET_FOREACH(source, profile->card->sources, idx) { + if (!source->active_port) + continue; + + if ((source->active_port->available != PA_AVAILABLE_NO) && (source->active_port->priority >= prio)) + return false; + } + return true; } @@ -93,7 +104,7 @@ static int try_to_switch_profile(pa_device_port *port) { case PA_DIRECTION_INPUT: name = profile->input_name; - good = profile_good_for_input(profile); + good = profile_good_for_input(profile, port->priority); break; }