]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Added subdevice identifiers
authorJaroslav Kysela <perex@perex.cz>
Thu, 10 May 2001 10:15:28 +0000 (10:15 +0000)
committerJaroslav Kysela <perex@perex.cz>
Thu, 10 May 2001 10:15:28 +0000 (10:15 +0000)
src/pcm/pcm_surr.c

index f16621c7102954b4b62adef2c65b221587b1670d..85d654eb6584fb8e1e244edba19828ba4b57c5ec 100644 (file)
@@ -757,7 +757,48 @@ int load_surround_config(snd_ctl_t *ctl, snd_pcm_surround_t *surr,
                        goto __error;
                }
                if (snd_config_search(n, "open_control", &n1) >= 0) {
-                       if ((err = snd_sctl_build(ctl, &surr->store, n1, NULL)) < 0) {
+                       snd_sctl_replace_t replace[4];
+                       char values[3][10] = { "123", "123", "123" };
+                       snd_pcm_info_t *info;
+                       int ridx = 0;
+                       
+                       snd_pcm_info_alloca(&info);
+                       if ((err = snd_pcm_info(surr->pcm[0], info)) < 0) {
+                               SNDERR("snd_pcm_info failed", snd_strerror(err));
+                               goto __error;
+                       }
+                       sprintf(values[0], "%i", snd_pcm_info_get_subdevice(info));
+                       replace[ridx].key = "index";
+                       replace[ridx].old_value = "subdevice0";
+                       replace[ridx].new_value = values[0];
+                       ridx++;
+                       
+                       if (surr->pcm[1]) {
+                               if ((err = snd_pcm_info(surr->pcm[1], info)) < 0) {
+                                       SNDERR("snd_pcm_info failed", snd_strerror(err));
+                                       goto __error;
+                               }
+                               sprintf(values[1], "%i", snd_pcm_info_get_subdevice(info));
+                               replace[ridx].key = "index";
+                               replace[ridx].old_value = "subdevice1";
+                               replace[ridx].new_value = values[1];
+                               ridx++;
+                       }
+                       if (surr->pcm[2]) {
+                               if ((err = snd_pcm_info(surr->pcm[2], info)) < 0) {
+                                       SNDERR("snd_pcm_info failed", snd_strerror(err));
+                                       goto __error;
+                               }
+                               sprintf(values[2], "%i", snd_pcm_info_get_subdevice(info));
+                               replace[ridx].key = "index";
+                               replace[ridx].old_value = "subdevice2";
+                               replace[ridx].new_value = values[2];
+                               ridx++;
+                       }
+                       replace[ridx].key = NULL;
+                       replace[ridx].old_value = NULL;
+                       replace[ridx].new_value = NULL;
+                       if ((err = snd_sctl_build(ctl, &surr->store, n1, replace)) < 0) {
                                SNDERR("snd_sctl_build : %s\n", snd_strerror(err));
                                goto __error;
                        }