Clemens Ladisch wrote:
Carlo Florendo wrote:
Clemens Ladisch wrote:
However,
I wish to be able to make the sequencer or player work without the
use of the ALSA queue nor the workaround in (2).
Why?
Because the queue
output and draining, AFAICS, is implemented in a blocking
manner.
When non-blocking mode is set (see snd_seq_nonblock()),
snd_seq_drain_output() does not block but writes only as many events to
the kernel buffer as fit inside (or returns -EAGAIN if the kernel buffer
is completely full).
Bingo! My recent tests show that snd_seq_nonblock() is indeed a useful
function and enables me to have control of the sequencer every time it
outputs an event :)
Gee, I've read the ALSA lib doc for months and never came across this
function. Up to now, I've not seen the part of the doc that describes
snd_seq_nonblock so I went straight to the source code of alsa-lib under
src/seq/seq.c and grepped for snd_seq_block().
The alsa-lib docs have to be improved :)
Thank you for the pointers!
Regards,
Clemens
Best Regards,
Carlo
--
Carlo Florendo
Softare Engineer/Network Co-Administrator
Astra Philippines Inc.
UP-Ayala Technopark, Diliman 1101, Quezon City
Philippines
http://www.astra.ph
--
The Astra Group of Companies
5-3-11 Sekido, Tama City
Tokyo 206-0011, Japan
http://www.astra.co.jp