]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Set up pcm->info properly
authorTakashi Iwai <tiwai@suse.de>
Tue, 17 May 2005 09:27:17 +0000 (09:27 +0000)
committerTakashi Iwai <tiwai@suse.de>
Tue, 17 May 2005 09:27:17 +0000 (09:27 +0000)
Set up pcm->info properly for ioplug according to the avaialbe callbacks.

src/pcm/pcm_ioplug.c

index 5bb90e26ba3fc43cb01c29ff1d05f76ab374e400..415e7e0ae8b1329fe6b4bd70e5843ade2de7f2ab 100644 (file)
@@ -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);