feat: allow unmuting by moving the pulseaudio slider

This commit is contained in:
Brenno Lemos
2023-10-15 17:50:41 -03:00
parent fd3710d869
commit ecbcf242d5
3 changed files with 63 additions and 0 deletions

View File

@ -38,7 +38,44 @@ void PulseaudioSlider::update() {
}
void PulseaudioSlider::onValueChanged() {
bool is_mute = false;
switch (target) {
case PulseaudioSliderTarget::Sink:
if (backend->getSinkMuted()) {
is_mute = true;
}
break;
case PulseaudioSliderTarget::Source:
if (backend->getSourceMuted()) {
is_mute = true;
}
break;
}
uint16_t volume = scale_.get_value();
if (is_mute) {
// Avoid setting sink/source to volume 0 if the user muted if via another mean.
if (volume == 0) {
return;
}
// If the sink/source is mute, but the user clicked the slider, unmute it!
else {
switch (target) {
case PulseaudioSliderTarget::Sink:
backend->toggleSinkMute(false);
break;
case PulseaudioSliderTarget::Source:
backend->toggleSourceMute(false);
break;
}
}
}
backend->changeVolume(volume, min_, max_);
}