diff options
author | Tanu Kaskinen <tanu.kaskinen@linux.intel.com> | 2015-05-04 21:03:41 +0300 |
---|---|---|
committer | Tanu Kaskinen <tanu.kaskinen@linux.intel.com> | 2015-08-21 14:33:10 +0300 |
commit | d7ce78b234470f035dc1abe0455cd3a6f0c5dc72 (patch) | |
tree | acf2f380295c640fe0167a9077053660074ef37c /src/modules/alsa | |
parent | f5fecff0b4cef99f7881ad146b72d44e4f06a698 (diff) | |
download | pulseaudio-d7ce78b234470f035dc1abe0455cd3a6f0c5dc72.tar.gz |
ucm: Don't create separate input and output jacks
The UCM spec doesn't support separate input and output jacks, so it's
redundant to have separate input and output jacks in
pa_alsa_ucm_device.
Diffstat (limited to 'src/modules/alsa')
-rw-r--r-- | src/modules/alsa/alsa-ucm.c | 36 | ||||
-rw-r--r-- | src/modules/alsa/alsa-ucm.h | 3 |
2 files changed, 19 insertions, 20 deletions
diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c index 98d9a5dc7..7ddb975eb 100644 --- a/src/modules/alsa/alsa-ucm.c +++ b/src/modules/alsa/alsa-ucm.c @@ -76,6 +76,8 @@ struct ucm_info { unsigned priority; }; +static void device_set_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack); + static struct ucm_items item[] = { {"PlaybackPCM", PA_ALSA_PROP_UCM_SINK}, {"CapturePCM", PA_ALSA_PROP_UCM_SOURCE}, @@ -1263,23 +1265,20 @@ static int ucm_create_mapping( return ret; } -static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *device, const char *pre_tag) { +static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *device) { pa_alsa_jack *j; const char *device_name; - char *name; const char *jack_control; char *alsa_name; pa_assert(ucm); pa_assert(device); - pa_assert(pre_tag); device_name = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_NAME); - name = pa_sprintf_malloc("%s%s", pre_tag, device_name); PA_LLIST_FOREACH(j, ucm->jacks) - if (pa_streq(j->name, name)) - goto out; + if (pa_streq(j->name, device_name)) + return j; jack_control = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_JACK_CONTROL); if (jack_control) @@ -1287,12 +1286,10 @@ static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *d else alsa_name = pa_sprintf_malloc("%s Jack", device_name); - j = pa_alsa_jack_new(NULL, name, alsa_name); + j = pa_alsa_jack_new(NULL, device_name, alsa_name); pa_xfree(alsa_name); PA_LLIST_PREPEND(pa_alsa_jack, ucm->jacks, j); -out: - pa_xfree(name); return j; } @@ -1348,6 +1345,8 @@ static int ucm_create_profile( p->priority = 1000; PA_LLIST_FOREACH(dev, verb->devices) { + pa_alsa_jack *jack; + name = pa_proplist_gets(dev->proplist, PA_ALSA_PROP_UCM_NAME); sink = pa_proplist_gets(dev->proplist, PA_ALSA_PROP_UCM_SINK); @@ -1355,10 +1354,8 @@ static int ucm_create_profile( ucm_create_mapping(ucm, ps, p, dev, verb_name, name, sink, source); - if (sink) - dev->output_jack = ucm_get_jack(ucm, dev, PA_UCM_PRE_TAG_OUTPUT); - if (source) - dev->input_jack = ucm_get_jack(ucm, dev, PA_UCM_PRE_TAG_INPUT); + jack = ucm_get_jack(ucm, dev); + device_set_jack(dev, jack); } /* Now find modifiers that have their own PlaybackPCM and create @@ -1447,11 +1444,8 @@ static void ucm_mapping_jack_probe(pa_alsa_mapping *m) { return; PA_IDXSET_FOREACH(dev, context->ucm_devices, idx) { - pa_alsa_jack *jack; - jack = m->direction == PA_ALSA_DIRECTION_OUTPUT ? dev->output_jack : dev->input_jack; - pa_assert (jack); - jack->has_control = pa_alsa_mixer_find(mixer_handle, jack->alsa_name, 0) != NULL; - pa_log_info("UCM jack %s has_control=%d", jack->name, jack->has_control); + dev->jack->has_control = pa_alsa_mixer_find(mixer_handle, dev->jack->alsa_name, 0) != NULL; + pa_log_info("UCM jack %s has_control=%d", dev->jack->name, dev->jack->has_control); } snd_mixer_close(mixer_handle); @@ -1681,6 +1675,12 @@ void pa_alsa_ucm_roled_stream_end(pa_alsa_ucm_config *ucm, const char *role, pa_ } } +static void device_set_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack) { + pa_assert(device); + + device->jack = jack; +} + #else /* HAVE_ALSA_UCM */ /* Dummy functions for systems without UCM support */ diff --git a/src/modules/alsa/alsa-ucm.h b/src/modules/alsa/alsa-ucm.h index a8c80903c..8ce9b4b14 100644 --- a/src/modules/alsa/alsa-ucm.h +++ b/src/modules/alsa/alsa-ucm.h @@ -142,8 +142,7 @@ struct pa_alsa_ucm_device { pa_idxset *conflicting_devices; pa_idxset *supported_devices; - pa_alsa_jack *input_jack; - pa_alsa_jack *output_jack; + pa_alsa_jack *jack; }; struct pa_alsa_ucm_modifier { |