aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mixer_api.c10
-rw-r--r--src/mixer_api.h3
-rw-r--r--src/output/alsa_plugin.c8
-rw-r--r--src/output/oss_plugin.c6
4 files changed, 7 insertions, 20 deletions
diff --git a/src/mixer_api.c b/src/mixer_api.c
index cd216415a..b0fea9a7a 100644
--- a/src/mixer_api.c
+++ b/src/mixer_api.c
@@ -38,11 +38,13 @@ void mixer_finish(struct mixer *mixer)
}
struct mixer *
-mixer_new(const struct mixer_plugin *plugin)
+mixer_new(const struct mixer_plugin *plugin, const struct config_param *param)
{
struct mixer *mixer = g_new(struct mixer, 1);
mixer_init(mixer, plugin);
+ plugin->configure(mixer->data, param);
+
return mixer;
}
@@ -53,12 +55,6 @@ mixer_free(struct mixer *mixer)
g_free(mixer);
}
-void mixer_configure(struct mixer *mixer, const struct config_param *param)
-{
- assert(mixer != NULL && mixer->plugin != NULL);
- mixer->plugin->configure(mixer->data, param);
-}
-
bool mixer_open(struct mixer *mixer)
{
assert(mixer != NULL && mixer->plugin != NULL);
diff --git a/src/mixer_api.h b/src/mixer_api.h
index c563457c2..cc0d8327f 100644
--- a/src/mixer_api.h
+++ b/src/mixer_api.h
@@ -73,12 +73,11 @@ void mixer_init(struct mixer *mixer, const struct mixer_plugin *plugin);
void mixer_finish(struct mixer *mixer);
struct mixer *
-mixer_new(const struct mixer_plugin *plugin);
+mixer_new(const struct mixer_plugin *plugin, const struct config_param *param);
void
mixer_free(struct mixer *mixer);
-void mixer_configure(struct mixer *mixer, const struct config_param *param);
bool mixer_open(struct mixer *mixer);
bool mixer_control(struct mixer *mixer, int cmd, void *arg);
void mixer_close(struct mixer *mixer);
diff --git a/src/output/alsa_plugin.c b/src/output/alsa_plugin.c
index f08e99041..43ce99605 100644
--- a/src/output/alsa_plugin.c
+++ b/src/output/alsa_plugin.c
@@ -89,9 +89,6 @@ alsa_data_new(void)
ret->pcm = NULL;
ret->writei = snd_pcm_writei;
- //use alsa mixer by default
- ret->mixer = mixer_new(&alsa_mixer);
-
return ret;
}
@@ -146,10 +143,7 @@ alsa_init(G_GNUC_UNUSED struct audio_output *ao,
}
alsa_configure(ad, param);
-
- if (param) {
- mixer_configure(ad->mixer, param);
- }
+ ad->mixer = mixer_new(&alsa_mixer, param);
return ad;
}
diff --git a/src/output/oss_plugin.c b/src/output/oss_plugin.c
index 0107dbdd2..33587be2c 100644
--- a/src/output/oss_plugin.c
+++ b/src/output/oss_plugin.c
@@ -278,8 +278,6 @@ static OssData *newOssData(void)
supportParam(ret, SNDCTL_DSP_CHANNELS, 2);
supportParam(ret, SNDCTL_DSP_SAMPLESIZE, 16);
- ret->mixer = mixer_new(&oss_mixer);
-
return ret;
}
@@ -357,7 +355,7 @@ static void *oss_open_default(const struct config_param *param)
if (ret[i] == 0) {
OssData *od = newOssData();
od->device = default_devices[i];
- mixer_configure(od->mixer, param);
+ od->mixer = mixer_new(&oss_mixer, param);
return od;
}
}
@@ -398,7 +396,7 @@ oss_initDriver(G_GNUC_UNUSED struct audio_output *audioOutput,
if (device != NULL) {
OssData *od = newOssData();
od->device = device;
- mixer_configure(od->mixer, param);
+ od->mixer = mixer_new(&oss_mixer, param);
return od;
}