From 8a7423fb4b4ca9e2825251d734217df8d982ea32 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Fri, 26 Feb 2016 20:29:24 +0100 Subject: [PATCH 2/2] Revert "module-alsa-card: Report available ports before unavailable ones" This reverts commit 91313e60a81e96ce976f24c522656c57b4ab94ca. --- src/modules/alsa/module-alsa-card.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c index 286cfc9..a88a83f 100644 --- a/src/modules/alsa/module-alsa-card.c +++ b/src/modules/alsa/module-alsa-card.c @@ -306,7 +306,7 @@ static void init_profile(struct userdata *u) { am->source = pa_alsa_source_new(u->module, u->modargs, __FILE__, u->card, am); } -static pa_available_t calc_port_state(pa_device_port *p, struct userdata *u) { +static void report_port_state(pa_device_port *p, struct userdata *u) { void *state; pa_alsa_jack *jack; pa_available_t pa = PA_AVAILABLE_UNKNOWN; @@ -350,13 +350,9 @@ static pa_available_t calc_port_state(pa_device_port *p, struct userdata *u) { pa = cpa; } } - return pa; -} -struct temp_port_avail { - pa_device_port *port; - pa_available_t avail; -}; + pa_device_port_set_available(p, pa); +} static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) { struct userdata *u = snd_mixer_elem_get_callback_private(melem); @@ -365,7 +361,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) { bool plugged_in; void *state; pa_alsa_jack *jack; - struct temp_port_avail *tp, *tports; + pa_device_port *port; pa_assert(u); @@ -382,8 +378,6 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) { pa_log_debug("Jack '%s' is now %s", pa_strnull(snd_hctl_elem_get_name(elem)), plugged_in ? "plugged in" : "unplugged"); - tports = tp = pa_xnew0(struct temp_port_avail, pa_hashmap_size(u->jacks)+1); - PA_HASHMAP_FOREACH(jack, u->jacks, state) if (jack->melem == melem) { pa_alsa_jack_set_plugged_in(jack, plugged_in); @@ -396,22 +390,9 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) { /* When not using UCM, we have to do the jack state -> port * availability mapping ourselves. */ - pa_assert_se(tp->port = jack->path->port); - tp->avail = calc_port_state(tp->port, u); - tp++; + pa_assert_se(port = jack->path->port); + report_port_state(port, u); } - - /* Report available ports before unavailable ones: in case port 1 becomes available when port 2 becomes unavailable, - this prevents an unnecessary switch port 1 -> port 3 -> port 2 */ - - for (tp = tports; tp->port; tp++) - if (tp->avail != PA_AVAILABLE_NO) - pa_device_port_set_available(tp->port, tp->avail); - for (tp = tports; tp->port; tp++) - if (tp->avail == PA_AVAILABLE_NO) - pa_device_port_set_available(tp->port, tp->avail); - - pa_xfree(tports); return 0; } -- 2.7.1