On Sun, Dec 30, 2012 at 06:39:57PM -0800, Devin Anderson wrote: > 1.) Return the master device's poll descriptors (the current implementation). > > We know this doesn't work. > > 2.) Return the poll descriptors of all of the devices (the old > implementation, IIUC). Why was this changed ? > This would lead to the same issue, and possibly make it worse if the > slave devices are sometimes ready before the master device. That depends. In that case snd_pcm_poll_descriptors_revents() can be expected to combine the events in the correct way, e.g. only return a POLLOUT if all playback devices are ready. I guess this is how things worked before the change. Since this should happen within at most a few samples of the first device being ready, things would work. Even if the device periods are not exactly synced the only consequence would be that the available processing time per period would be a few samples shorter. AFAIK, Jack's ALSA backend uses snd_pcm_poll_descriptors_revents(), as does zita-alsa-pcmi. The two wait() functions are very similar but differ in some details, so it could be a good idea to test zita-alsa-pcmi with a multi device. You could use the alsa_loopback app that comes with the library. Just add some debug options in alsa_loopback.cc, line 55: D = new Alsa_pcmi (playdev, captdev, 0, fsamp, frsize, nfrags, Alsa_pcmi::DEBUG_STAT | Alsa_pcmi::DEBUG_WAIT); to see what's happening. Ciao, -- FA A world of exhaustive, reliable metadata would be an utopia. It's also a pipe-dream, founded on self-delusion, nerd hubris and hysterically inflated market opportunities. (Cory Doctorow) _______________________________________________ Linux-audio-user mailing list Linux-audio-user@xxxxxxxxxxxxxxxxxxxx http://lists.linuxaudio.org/listinfo/linux-audio-user