aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/filter/replay_gain_filter_plugin.c13
-rw-r--r--src/replay_gain_config.c13
-rw-r--r--src/replay_gain_config.h6
3 files changed, 21 insertions, 11 deletions
diff --git a/src/filter/replay_gain_filter_plugin.c b/src/filter/replay_gain_filter_plugin.c
index 0519b9dfe..a0133e493 100644
--- a/src/filter/replay_gain_filter_plugin.c
+++ b/src/filter/replay_gain_filter_plugin.c
@@ -28,7 +28,6 @@
#include "replay_gain_info.h"
#include "replay_gain_config.h"
#include "mixer_control.h"
-#include "playlist.h"
#include <assert.h>
#include <string.h>
@@ -115,11 +114,7 @@ replay_gain_filter_init(G_GNUC_UNUSED const struct config_param *param,
filter_init(&filter->filter, &replay_gain_filter_plugin);
filter->mixer = NULL;
- if (replay_gain_mode == REPLAY_GAIN_AUTO) {
- filter->mode = g_playlist.queue.random ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
- } else {
- filter->mode = replay_gain_mode;
- }
+ filter->mode = replay_gain_get_real_mode();
replay_gain_info_init(&filter->info);
filter->volume = PCM_VOLUME_1;
@@ -169,11 +164,7 @@ replay_gain_filter_filter(struct filter *_filter,
enum replay_gain_mode rg_mode;
/* check if the mode has been changed since the last call */
- if (replay_gain_mode == REPLAY_GAIN_AUTO) {
- rg_mode = g_playlist.queue.random ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
- } else {
- rg_mode = replay_gain_mode;
- }
+ rg_mode = replay_gain_get_real_mode();
if (filter->mode != rg_mode) {
g_debug("replay gain mode has changed %d->%d\n", filter->mode, rg_mode);
diff --git a/src/replay_gain_config.c b/src/replay_gain_config.c
index 3eae9d960..2ef39a4b7 100644
--- a/src/replay_gain_config.c
+++ b/src/replay_gain_config.c
@@ -19,6 +19,7 @@
#include "config.h"
#include "replay_gain_config.h"
+#include "playlist.h"
#include "conf.h"
#include "idle.h"
@@ -129,3 +130,15 @@ void replay_gain_global_init(void)
replay_gain_missing_preamp = pow(10, f / 20.0);
}
}
+
+enum replay_gain_mode replay_gain_get_real_mode(void)
+{
+ enum replay_gain_mode rgm;
+
+ rgm = replay_gain_mode;
+
+ if (rgm == REPLAY_GAIN_AUTO)
+ rgm = g_playlist.queue.random ? REPLAY_GAIN_TRACK : REPLAY_GAIN_ALBUM;
+
+ return rgm;
+}
diff --git a/src/replay_gain_config.h b/src/replay_gain_config.h
index 922fb2b18..c3a1fe610 100644
--- a/src/replay_gain_config.h
+++ b/src/replay_gain_config.h
@@ -45,4 +45,10 @@ replay_gain_get_mode_string(void);
bool
replay_gain_set_mode_string(const char *p);
+/**
+ * Returns the "real" mode according to the "auto" setting"
+ */
+enum replay_gain_mode
+replay_gain_get_real_mode(void);
+
#endif