summaryrefslogtreecommitdiff
path: root/src/modules/alsa/alsa-sink.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2020-03-31 13:24:36 +0200
committerTanu Kaskinen <tanuk@iki.fi>2020-04-09 16:42:28 +0300
commitfc5f263e594cf5ecb7034fb54dadb286d2b4a810 (patch)
tree7bceb68d13daefc2fb21933584b61648640619fb /src/modules/alsa/alsa-sink.c
parent77d00b1cce9bc695be6314ec15b12a4a0dcd08ee (diff)
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>
Diffstat (limited to 'src/modules/alsa/alsa-sink.c')
-rw-r--r--src/modules/alsa/alsa-sink.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 65430caed..7048371e1 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -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 */