mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-19 08:57:00 -05:00
alsa: rework mixer logic
Completely rework mixer logic. This now allows controlling a full set of elements from a single sink's volume slider/mute button. This also introduces sink and source "ports" that can be used to choose different input or output ports with the UI. (i.e. "mic"/"line-in" or "speaker"/"headphones". The mixer paths and device maps are now configered in external configuration files and can be tweaked as necessary.
This commit is contained in:
parent
e9c70ac41b
commit
31575f7766
54 changed files with 7029 additions and 1694 deletions
|
|
@ -442,7 +442,7 @@ void pa_sink_input_unlink(pa_sink_input *i) {
|
|||
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
|
||||
pa_cvolume new_volume;
|
||||
pa_sink_update_flat_volume(i->sink, &new_volume);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
|
||||
}
|
||||
|
||||
if (i->sink->asyncmsgq)
|
||||
|
|
@ -520,7 +520,7 @@ void pa_sink_input_put(pa_sink_input *i) {
|
|||
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
|
||||
pa_cvolume new_volume;
|
||||
pa_sink_update_flat_volume(i->sink, &new_volume);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
|
||||
} else
|
||||
pa_sink_input_set_relative_volume(i, &i->virtual_volume);
|
||||
|
||||
|
|
@ -900,7 +900,7 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
|
|||
* volumes and update the flat volume of the sink */
|
||||
|
||||
pa_sink_update_flat_volume(i->sink, &new_volume);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE, FALSE);
|
||||
|
||||
} else {
|
||||
|
||||
|
|
@ -1159,7 +1159,7 @@ int pa_sink_input_start_move(pa_sink_input *i) {
|
|||
/* We might need to update the sink's volume if we are in flat
|
||||
* volume mode. */
|
||||
pa_sink_update_flat_volume(i->sink, &new_volume);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
|
||||
}
|
||||
|
||||
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0);
|
||||
|
|
@ -1252,7 +1252,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
|
|||
|
||||
/* We might need to update the sink's volume if we are in flat volume mode. */
|
||||
pa_sink_update_flat_volume(i->sink, &new_volume);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE);
|
||||
pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
|
||||
}
|
||||
|
||||
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue