>> should it work for me to call snd_pcm_drop() for both playback and >> capture streams if i'm in the middle of a snd_pcm_mmap_{begin,commit} >> pair? > >Nope. Do you think that we need to lock these related code blocks in >alsa-lib for threaded applications or leave this locking for application >coders?
leave it for applications. but here's the problem. i'm in the middle of an mmap_{begin,commit} pair, and i realize that i've caused a xrun (e.g. because i waited too long via poll(2) for something else to happen). there's no point calling mmap_commit() at this point, since i know i don't have any data to commit and i know i'm too late. what i want to do is to stop the interface, and then restart it from scratch. so, i am effectively doing: poll snd_pcm_mmap_begin(); snd_pcm_mmap_commit(); poll snd_pcm_mmap_begin(); ... realize things have gone wrong ... snd_pcm_drop(); snd_pcm_prepare(); snd_pcm_start (); poll snd_pcm_mmap_begin(); snd_pcm_mmap_commit(); i would have expected snd_pcm_drop() to effectively shut down the driver, or at least for snd_pcm_drop() and snd_pcm_prepare() to get it back to a "pristine" state again. so, how should i handle such a condition? --p _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel