[pulseaudio-discuss] [PATCH v2 0/6] Fix initial HDMI profile selection

Tanu Kaskinen tanuk at iki.fi
Fri Jun 10 17:55:48 UTC 2016


>From the v1 cover letter:

This patch set fixes a case where an unavailable HDMI profile gets
selected by default, even when an available one exists too. The
underlying problem is that the alsa card doesn't manage profile
availability information at all, so all profiles have unknown
availability. These patches add some simple profile availability
management logic to module-alsa-card. Some refactoring was
required too.

BugLink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=8448


Changes in v2:

* Don't add pa_card_profile.ports. It's not needed.
* Don't move the CARD_NEW hook to pa_card_put(). Instead, add a new
  hook for choosing the initial profile: CARD_CHOOSE_INITIAL_PROFILE.
  Card implementations now must always call
  pa_card_choose_initial_profile() between pa_card_new() and
  pa_card_put(). This allows initializing the card jack states after
  pa_card_new() and overriding the profile selection policy before
  pa_card_put().
* Reorder the code in module-card-restore to adapt to the new hook.
* Replace the pa_card_state_t enum with a boolean that indicates
  whether the card has been linked.
* Log card unlinking and send unlink notifications only if the card
  is linked when freeing it.

David also suggested that when jack states change, we could update the
state of available profiles before updating the state of unavailable
profiles. The rationale was that we do that with port states to work
around a deficiency in module-switch-on-port-available, so maybe it
would make sense for profiles too. I agreed to do that, but later I
found out that implementing this would be more complicated than
expected, because UCM would need special handling. Since this change
is not necessary, I decided to not implement it.


Tanu Kaskinen (6):
  alsa, bluetooth: fail if user-requested profile doesn't exist
  card: don't allow the CARD_NEW hook to fail
  card: move profile selection after pa_card_new()
  card: remove pa_card_new_data.active_profile
  card: simplify setting pa_card.name
  alsa: set availability for (some) unavailable profiles

 src/modules/alsa/module-alsa-card.c          |  52 +++++++++++-
 src/modules/bluetooth/module-bluez4-device.c |  28 +++++--
 src/modules/bluetooth/module-bluez5-device.c |   2 +
 src/modules/macosx/module-coreaudio-device.c |   2 +
 src/modules/module-card-restore.c            |  36 +++++---
 src/pulsecore/card.c                         | 120 +++++++++++++++------------
 src/pulsecore/card.h                         |  14 ++--
 src/pulsecore/core.h                         |   1 +
 8 files changed, 173 insertions(+), 82 deletions(-)

-- 
2.8.1



More information about the pulseaudio-discuss mailing list