alsa-sink: Don't assume we were able to enable hw-volume or sync-volume (v1.1)

This patch also disables mixer callback code if we do not have neither
HW-volume or HW-mute.
This commit is contained in:
Jyri Sarha 2011-01-13 16:44:45 +02:00 committed by Colin Guthrie
parent 98db3dffb6
commit aefa94f052

View file

@ -1672,8 +1672,6 @@ fail:
}
static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB, pa_bool_t sync_volume) {
int (*mixer_callback)(snd_mixer_elem_t *, unsigned int);
pa_assert(u);
if (!u->mixer_handle)
@ -1762,7 +1760,9 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB, pa_bool_t sync_v
pa_log_info("Using hardware mute control.");
}
if (sync_volume) {
if (u->sink->flags & (PA_SINK_HW_VOLUME_CTRL|PA_SINK_HW_MUTE_CTRL)) {
int (*mixer_callback)(snd_mixer_elem_t *, unsigned int);
if (u->sink->flags & PA_SINK_SYNC_VOLUME) {
u->mixer_pd = pa_alsa_mixer_pdata_new();
mixer_callback = io_mixer_callback;
@ -1770,7 +1770,6 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB, pa_bool_t sync_v
pa_log("Failed to initialize file descriptor monitoring");
return -1;
}
} else {
u->mixer_fdl = pa_alsa_fdlist_new();
mixer_callback = ctl_mixer_callback;
@ -1785,6 +1784,7 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB, pa_bool_t sync_v
pa_alsa_path_set_set_callback(u->mixer_path_set, u->mixer_handle, mixer_callback, u);
else
pa_alsa_path_set_callback(u->mixer_path, u->mixer_handle, mixer_callback, u);
}
return 0;
}