Partition: add UpdateEffectiveReplayGainMode()
Move code from replay_gain_get_real_mode().
This commit is contained in:
parent
9b9144f25d
commit
0759d72108
@ -517,7 +517,7 @@ try {
|
||||
|
||||
glue_state_file_init();
|
||||
|
||||
instance->partition->outputs.SetReplayGainMode(replay_gain_get_real_mode(instance->partition->playlist.queue.random));
|
||||
instance->partition->UpdateEffectiveReplayGainMode(replay_gain_mode);
|
||||
|
||||
#ifdef ENABLE_DATABASE
|
||||
if (config_get_bool(ConfigOption::AUTO_UPDATE, false)) {
|
||||
|
@ -42,6 +42,17 @@ Partition::EmitIdle(unsigned mask)
|
||||
instance.EmitIdle(mask);
|
||||
}
|
||||
|
||||
void
|
||||
Partition::UpdateEffectiveReplayGainMode(ReplayGainMode mode)
|
||||
{
|
||||
if (mode == REPLAY_GAIN_AUTO)
|
||||
mode = playlist.queue.random
|
||||
? REPLAY_GAIN_TRACK
|
||||
: REPLAY_GAIN_ALBUM;
|
||||
|
||||
outputs.SetReplayGainMode(mode);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_DATABASE
|
||||
|
||||
const Database *
|
||||
|
@ -176,6 +176,14 @@ struct Partition final : QueueListener, PlayerListener, MixerListener {
|
||||
playlist.SetConsume(new_value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Publishes the effective #ReplayGainMode to all subsystems.
|
||||
* #REPLAY_GAIN_AUTO is substituted.
|
||||
*
|
||||
* @param mode the configured mode
|
||||
*/
|
||||
void UpdateEffectiveReplayGainMode(ReplayGainMode mode);
|
||||
|
||||
#ifdef ENABLE_DATABASE
|
||||
/**
|
||||
* Returns the global #Database instance. May return nullptr
|
||||
|
@ -131,16 +131,3 @@ void replay_gain_global_init(void)
|
||||
replay_gain_limit = config_get_bool(ConfigOption::REPLAYGAIN_LIMIT,
|
||||
DEFAULT_REPLAYGAIN_LIMIT);
|
||||
}
|
||||
|
||||
ReplayGainMode
|
||||
replay_gain_get_real_mode(bool random_mode)
|
||||
{
|
||||
ReplayGainMode rgm;
|
||||
|
||||
rgm = replay_gain_mode;
|
||||
|
||||
if (rgm == REPLAY_GAIN_AUTO)
|
||||
rgm = random_mode ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
|
||||
|
||||
return rgm;
|
||||
}
|
||||
|
@ -47,11 +47,4 @@ replay_gain_get_mode_string();
|
||||
bool
|
||||
replay_gain_set_mode_string(const char *p);
|
||||
|
||||
/**
|
||||
* Returns the "real" mode according to the "auto" setting"
|
||||
*/
|
||||
gcc_pure
|
||||
ReplayGainMode
|
||||
replay_gain_get_real_mode(bool random_mode);
|
||||
|
||||
#endif
|
||||
|
@ -263,7 +263,7 @@ handle_random(Client &client, Request args, gcc_unused Response &r)
|
||||
{
|
||||
bool status = args.ParseBool(0);
|
||||
client.partition.SetRandom(status);
|
||||
client.partition.outputs.SetReplayGainMode(replay_gain_get_real_mode(client.partition.GetRandom()));
|
||||
client.partition.UpdateEffectiveReplayGainMode(replay_gain_mode);
|
||||
return CommandResult::OK;
|
||||
}
|
||||
|
||||
@ -338,7 +338,7 @@ handle_replay_gain_mode(Client &client, Request args, Response &r)
|
||||
return CommandResult::ERROR;
|
||||
}
|
||||
|
||||
client.partition.outputs.SetReplayGainMode(replay_gain_get_real_mode(client.playlist.queue.random));
|
||||
client.partition.UpdateEffectiveReplayGainMode(replay_gain_mode);
|
||||
client.partition.EmitIdle(IDLE_OPTIONS);
|
||||
return CommandResult::OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user