>> 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