On Mon, 2015-05-04 at 21:03 +0300, Tanu Kaskinen wrote: > Here's v2 for supporting UCM's JackHWMute. What used to be only one > patch is now six patches, to make the review experience even more > pleasant. There are several changes beyond just splitting the > patch into smaller pieces: > > - Instead of creating one jack object per UCM device name, there's > now one jack object per kcontrol. The reason for this is that I > gained motivation to refactor the jack handling in the traditional > mixer code too, and I plan to unify both code bases to use the one > jack per kcontrol model, which I think is the most conceptually > clear approach (creating one jack object per physical jack would be > even better, but Linux doesn't provide the necessary information to > implement that). > > - Removed input and output jack separation. UCM doesn't support > specifying separate jacks, and pretending otherwise made working > with the code more difficult than necessary. > > - JackHWMute can actually contain more than one device (use-case.h > documentation patch has been sent to alsa-devel). The code was > updated to reflect this. > > - UCM ports are now initialized with unknown availability to match > the traditional mixer code. This revealed a couple of bugs, which > are now fixed: > > - When the jack state was changed, the order of updating ordinary > and hw-mute devices' port availability was "wrong": > module-switch-on-port-available didn't like the original order. > Doing the updates in a different order made > module-switch-on-port-available happy. (There's a wall of text > comment in the code to explain the details.) > > - In v1, I did not take pa_alsa_jack.has_control into account when > updating port availability. That didn't seem to have much effect > when ports were initialized with "yes" availability, but with > "unknown" this bug became visible. Now has_control is always > considered when updating the port availability. > > - Added pa_alsa_jack_new() and pa_alsa_jack_free(). That's a minor > refactoring that I felt was useful. > > Tanu Kaskinen (6): > alsa: Add pa_alsa_jack_new() and pa_alsa_jack_free() > ucm: Don't create separate input and output jacks > alsa: Add associations between jacks, UCM devices and UCM ports > alsa: Move UCM port availability updating to the mixer code > ucm: Create only one jack object per kcontrol > ucm: Add support for "JackHWMute" > > src/modules/alsa/alsa-mixer.c | 138 ++++++++++++++++--- > src/modules/alsa/alsa-mixer.h | 10 ++ > src/modules/alsa/alsa-ucm.c | 268 +++++++++++++++++++++++++++++++----- > src/modules/alsa/alsa-ucm.h | 16 ++- > src/modules/alsa/module-alsa-card.c | 19 +-- > src/pulsecore/device-port.c | 14 +- > 6 files changed, 401 insertions(+), 64 deletions(-) I agreed with David to push this patch series, even though the patches haven't been through proper review. This patch series was the last thing blocking a release candidate, so RC1 should happen soon. -- Tanu