mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-31 22:25:33 -04:00
ucm: fix the port / ucm device activation on boot
The UCM device must be activated using the pa_alsa_ucm_set_port() call on boot (the sink creation time). In case when the mixer controls are not defined for the application in the UCM configuration, the mixer_handle is NULL. Call the pa_alsa_ucm_set_port() before the mixer_handle check. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
77d00b1cce
commit
fc5f263e59
2 changed files with 18 additions and 8 deletions
|
|
@ -2138,6 +2138,15 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
|
||||
pa_assert(u);
|
||||
|
||||
/* This code is before the u->mixer_handle check, because if the UCM
|
||||
* configuration doesn't specify volume or mute controls, u->mixer_handle
|
||||
* will be NULL, but the UCM device enable sequence will still need to be
|
||||
* executed. */
|
||||
if (u->sink->active_port && u->ucm_context) {
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->sink->active_port, true) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!u->mixer_handle)
|
||||
return 0;
|
||||
|
||||
|
|
@ -2155,10 +2164,6 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
} else {
|
||||
pa_alsa_ucm_port_data *data;
|
||||
|
||||
/* First activate the port on the UCM side */
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->sink->active_port, true) < 0)
|
||||
return -1;
|
||||
|
||||
data = PA_DEVICE_PORT_DATA(u->sink->active_port);
|
||||
|
||||
/* Now activate volume controls, if any */
|
||||
|
|
|
|||
|
|
@ -1844,6 +1844,15 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
|
||||
pa_assert(u);
|
||||
|
||||
/* This code is before the u->mixer_handle check, because if the UCM
|
||||
* configuration doesn't specify volume or mute controls, u->mixer_handle
|
||||
* will be NULL, but the UCM device enable sequence will still need to be
|
||||
* executed. */
|
||||
if (u->source->active_port && u->ucm_context) {
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->source->active_port, false) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!u->mixer_handle)
|
||||
return 0;
|
||||
|
||||
|
|
@ -1861,10 +1870,6 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
} else {
|
||||
pa_alsa_ucm_port_data *data;
|
||||
|
||||
/* First activate the port on the UCM side */
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->source->active_port, false) < 0)
|
||||
return -1;
|
||||
|
||||
data = PA_DEVICE_PORT_DATA(u->source->active_port);
|
||||
|
||||
/* Now activate volume controls, if any */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue