~ubuntu-branches/ubuntu/maverick/alsa-lib/maverick-proposed

« back to all changes in this revision

Viewing changes to src/pcm/pcm_plug.c

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2009-05-26 08:57:32 UTC
  • mfrom: (1.1.11 upstream) (2.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090526085732-wuuhzl1y30f1fnyd
Tags: 1.0.20-1ubuntu1
* Merge from debian unstable, remaining changes:
  - debian/rules:
    + Install into /usr/lib32/ on amd64 for the lib32asound2 package
    + Don't bail when removing include/alsa
  - debian/control: Add Vcs-Bzr URI
  - Add configuration files for bluetooth/bluez-alsa and pulseaudio
  - debian/libasound2.install: Ship smixer plugins for native and bi-arch
    packages
  - drop libcxxtools-dev build dependency, its in universe

Show diffs side-by-side

added added

removed removed

Lines of Context:
605
605
                                       plug->gen.slave != plug->req_slave);
606
606
        if (err < 0)
607
607
                return err;
608
 
        slv->access = clt->access;
 
608
        switch (slv->access) {
 
609
        case SND_PCM_ACCESS_RW_INTERLEAVED:
 
610
                slv->access = SND_PCM_ACCESS_MMAP_INTERLEAVED;
 
611
                break;
 
612
        case SND_PCM_ACCESS_RW_NONINTERLEAVED:
 
613
                slv->access = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
 
614
                break;
 
615
        default:
 
616
                break;
 
617
        }
609
618
        return 1;
610
619
}
611
620
#endif
743
752
                return 0; /* OK, we have mmap support */
744
753
#ifdef BUILD_PCM_PLUGIN_MMAP_EMUL
745
754
        /* no mmap support - we need mmap emulation */
 
755
 
 
756
        if (!snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_INTERLEAVED) &&
 
757
            !snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_NONINTERLEAVED)) 
 
758
                return -EINVAL; /* even no RW access?  no way! */
 
759
 
746
760
        cmask = (const snd_pcm_access_mask_t *)
747
761
                snd_pcm_hw_param_get_mask(cparams,
748
762
                                          SND_PCM_HW_PARAM_ACCESS);
749
763
        snd_mask_none(&mask);
750
764
        if (snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_RW_INTERLEAVED) ||
751
 
            snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_INTERLEAVED))
752
 
                snd_pcm_access_mask_set(&mask,
753
 
                                        SND_PCM_ACCESS_RW_INTERLEAVED);
 
765
            snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_INTERLEAVED)) {
 
766
                if (snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_INTERLEAVED))
 
767
                        snd_pcm_access_mask_set(&mask,
 
768
                                                SND_PCM_ACCESS_RW_INTERLEAVED);
 
769
        }
754
770
        if (snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_RW_NONINTERLEAVED) ||
755
 
            snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED))
756
 
                snd_pcm_access_mask_set(&mask,
757
 
                                        SND_PCM_ACCESS_RW_NONINTERLEAVED);
758
 
        *smask = mask;
 
771
            snd_pcm_access_mask_test(cmask, SND_PCM_ACCESS_MMAP_NONINTERLEAVED)) {
 
772
                if (snd_pcm_access_mask_test(smask, SND_PCM_ACCESS_RW_NONINTERLEAVED))
 
773
                        snd_pcm_access_mask_set(&mask,
 
774
                                                SND_PCM_ACCESS_RW_NONINTERLEAVED);
 
775
        }
 
776
        if (!snd_mask_empty(&mask))
 
777
                *smask = mask; /* prefer the straight conversion */
759
778
        return 0;
760
779
#else
761
780
        return -EINVAL;