mixer/Volume: refactor to class MixerMemento, per partition

Eliminate global variables, convert them to MixerMemento fields.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1583
This commit is contained in:
Max Kellermann
2022-08-08 23:15:09 +02:00
parent 615c301961
commit 4b4f47002b
13 changed files with 141 additions and 116 deletions

View File

@@ -33,7 +33,6 @@
#include "TimePrint.hxx"
#include "decoder/DecoderPrint.hxx"
#include "ls.hxx"
#include "mixer/Volume.hxx"
#include "time/ChronoUtil.hxx"
#include "util/UriUtil.hxx"
#include "util/StringAPI.hxx"
@@ -325,7 +324,7 @@ handle_getvol(Client &client, Request, Response &r)
{
auto &partition = client.GetPartition();
const auto volume = volume_level_get(partition.outputs);
const auto volume = partition.mixer_memento.GetVolume(partition.outputs);
if (volume >= 0)
r.Fmt(FMT_STRING("volume: {}\n"), volume);
@@ -337,7 +336,8 @@ handle_setvol(Client &client, Request args, Response &)
{
unsigned level = args.ParseUnsigned(0, 100);
volume_level_change(client.GetPartition().outputs, level);
auto &partition = client.GetPartition();
partition.mixer_memento.SetVolume(partition.outputs, level);
return CommandResult::OK;
}
@@ -346,9 +346,11 @@ handle_volume(Client &client, Request args, Response &r)
{
int relative = args.ParseInt(0, -100, 100);
auto &outputs = client.GetPartition().outputs;
auto &partition = client.GetPartition();
auto &outputs = partition.outputs;
auto &mixer_memento = partition.mixer_memento;
const int old_volume = volume_level_get(outputs);
const int old_volume = mixer_memento.GetVolume(outputs);
if (old_volume < 0) {
r.Error(ACK_ERROR_SYSTEM, "No mixer");
return CommandResult::ERROR;
@@ -361,7 +363,7 @@ handle_volume(Client &client, Request args, Response &r)
new_volume = 100;
if (new_volume != old_volume)
volume_level_change(outputs, new_volume);
mixer_memento.SetVolume(outputs, new_volume);
return CommandResult::OK;
}