diff options
-rw-r--r-- | src/mixer_api.c | 10 | ||||
-rw-r--r-- | src/mixer_api.h | 3 | ||||
-rw-r--r-- | src/output/alsa_plugin.c | 8 | ||||
-rw-r--r-- | src/output/oss_plugin.c | 6 |
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; } |