From e76bbd74d76ac158819d52cde6cbeb2eb28c92b7 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 17 May 2005 09:27:17 +0000 Subject: [PATCH] Set up pcm->info properly Set up pcm->info properly for ioplug according to the avaialbe callbacks. --- src/pcm/pcm_ioplug.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c index 5bb90e26..415e7e0a 100644 --- a/src/pcm/pcm_ioplug.c +++ b/src/pcm/pcm_ioplug.c @@ -237,6 +237,7 @@ static int snd_pcm_ioplug_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) { int change = 0, change1, change2, err; ioplug_priv_t *io = pcm->private_data; + struct snd_ext_parm *p; int i; /* access, format */ @@ -331,6 +332,26 @@ static int snd_pcm_ioplug_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) return err; } + params->info = SND_PCM_INFO_BLOCK_TRANSFER; + p = &io->params[SND_PCM_IOPLUG_HW_ACCESS]; + if (p->active) { + for (i = 0; i < p->num_list; i++) + switch (p->list[i]) { + case SND_PCM_ACCESS_MMAP_INTERLEAVED: + case SND_PCM_ACCESS_RW_INTERLEAVED: + params->info |= SND_PCM_INFO_INTERLEAVED; + break; + case SND_PCM_ACCESS_MMAP_NONINTERLEAVED: + case SND_PCM_ACCESS_RW_NONINTERLEAVED: + params->info |= SND_PCM_INFO_NONINTERLEAVED; + break; + } + } + if (io->data->callback->pause) + params->info |= SND_PCM_INFO_PAUSE; + if (io->data->callback->resume) + params->info |= SND_PCM_INFO_RESUME; + #if 0 fprintf(stderr, "XXX\n"); dump_parm(params); -- 2.47.1