diff options
Diffstat (limited to 'plugins/alsa/alsa-plug-rate.c')
-rw-r--r-- | plugins/alsa/alsa-plug-rate.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/alsa/alsa-plug-rate.c b/plugins/alsa/alsa-plug-rate.c index ef7c335..00ad3d4 100644 --- a/plugins/alsa/alsa-plug-rate.c +++ b/plugins/alsa/alsa-plug-rate.c @@ -23,6 +23,13 @@ ALSA_PLUG_PROTO(rate); +static void rateConfigClean(SoftMixerT *mixer, void * arg) { + snd_config_t * rateConfig = arg; + AFB_API_DEBUG(mixer->api, "%s... rate config", __func__); + snd_config_delete(rateConfig); + snd_config_update(); +} + PUBLIC AlsaPcmCtlT* AlsaCreateRate(SoftMixerT *mixer, AlsaStreamAudioT * stream, const char* pcmName, AlsaPcmCtlT *pcmSlave, AlsaPcmHwInfoT *params, int open) { snd_config_t *rateConfig, *slaveConfig, *elemConfig, *pcmConfig; @@ -71,8 +78,6 @@ PUBLIC AlsaPcmCtlT* AlsaCreateRate(SoftMixerT *mixer, AlsaStreamAudioT * stream, goto OnErrorExit; } - stream->rateConfig = rateConfig; - if (open) error = _snd_pcm_rate_open(&pcmPlug->handle, pcmPlug->cid.cardid, snd_config, rateConfig, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); if (error) { AFB_API_ERROR(mixer->api, @@ -81,6 +86,9 @@ PUBLIC AlsaPcmCtlT* AlsaCreateRate(SoftMixerT *mixer, AlsaStreamAudioT * stream, goto OnErrorExit; } + pcmPlug->private_data = rateConfig; + pcmPlug->private_data_clean = rateConfigClean; + // Debug config & pcm //AlsaDumpCtlConfig(mixer, "plug-rate", pcmConfig, 1); AlsaDumpCtlConfig (mixer, "plug-rate", rateConfig, 1); |