alsa-sink/source: Really set volumes on port change

If deferred volumes were activated, set_volume does not really set
the volume, and is probably only meant to be called from the main
thread.
As we're currently really setting the port and the mute here (i e
modifying ALSA), we should really modify the volume as well.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
This commit is contained in:
David Henningsson 2012-04-03 21:35:07 +02:00
parent e815a1f81a
commit 87edc1ccb0
2 changed files with 14 additions and 4 deletions

View file

@ -1465,8 +1465,13 @@ static int sink_set_port_cb(pa_sink *s, pa_device_port *p) {
if (s->set_mute)
s->set_mute(s);
if (s->set_volume)
s->set_volume(s);
if (s->flags & PA_SINK_DEFERRED_VOLUME) {
if (s->write_volume)
s->write_volume(s);
} else {
if (s->set_volume)
s->set_volume(s);
}
return 0;
}

View file

@ -1368,8 +1368,13 @@ static int source_set_port_cb(pa_source *s, pa_device_port *p) {
if (s->set_mute)
s->set_mute(s);
if (s->set_volume)
s->set_volume(s);
if (s->flags & PA_SOURCE_DEFERRED_VOLUME) {
if (s->write_volume)
s->write_volume(s);
} else {
if (s->set_volume)
s->set_volume(s);
}
return 0;
}