filter/ReplayGain: add method _set_mode()

Push the new mode to the filter instead of accessing global variables
through replay_gain_get_real_mode().
This commit is contained in:
Max Kellermann
2013-01-05 00:05:57 +01:00
parent 7be33eba48
commit 1a8ef3cdab
12 changed files with 56 additions and 20 deletions

View File

@@ -119,7 +119,7 @@ replay_gain_filter_init(G_GNUC_UNUSED const struct config_param *param,
filter_init(&filter->filter, &replay_gain_filter_plugin);
filter->mixer = NULL;
filter->mode = replay_gain_get_real_mode();
filter->mode = REPLAY_GAIN_OFF;
replay_gain_info_init(&filter->info);
filter->volume = PCM_VOLUME_1;
@@ -164,16 +164,6 @@ replay_gain_filter_filter(struct filter *_filter,
(struct replay_gain_filter *)_filter;
bool success;
void *dest;
enum replay_gain_mode rg_mode;
/* check if the mode has been changed since the last call */
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);
filter->mode = rg_mode;
replay_gain_filter_update(filter);
}
*dest_size_r = src_size;
@@ -243,3 +233,19 @@ replay_gain_filter_set_info(struct filter *_filter,
replay_gain_filter_update(filter);
}
void
replay_gain_filter_set_mode(struct filter *_filter, enum replay_gain_mode mode)
{
struct replay_gain_filter *filter =
(struct replay_gain_filter *)_filter;
if (mode == filter->mode)
/* no change */
return;
g_debug("replay gain mode has changed %d->%d\n", filter->mode, mode);
filter->mode = mode;
replay_gain_filter_update(filter);
}

View File

@@ -47,4 +47,7 @@ void
replay_gain_filter_set_info(struct filter *filter,
const struct replay_gain_info *info);
void
replay_gain_filter_set_mode(struct filter *filter, enum replay_gain_mode mode);
#endif