mirror of
https://gitee.com/openharmony/third_party_alsa-lib
synced 2024-11-27 09:40:32 +00:00
244d345fda
Wed, 22 Dec 1999 15:51:37 +0100 Changes in alsa-driver: 1. SND_SEQ_DEST_DIRECT was removed. For direct dispatching, specify the scheduling queue as SND_SEQ_QUEUE_DIRECT. Source compatibility is kept if alsa-lib functions are used to set or check direct mode. Tested: pmidi, playmidi1, aconnect, aseqview, OSS emulation 2. The error event can be bounced to the sender as an encapsulated event with SND_SEQ_EVENT_BOUNCE type. If the orignal event is variable length (like SYSEX), the data body is added after the copied event data. (To access to it, use snd_seq_event_bounce_ext_data() macro.) This feature is enabled only when the sender is opened with read flag and has a client-filter flag SND_SEQ_FILTER_BOUNCE, so that as default it is disabled. 3. Maximum size of VARIABLE length event is defined as 2048 bytes. Larger events will be refused. Note that this is not the size of VARUSR nor VARIPC event. 4. Return error code was revised. Possible errors for read(): -ENXIO invalid client or file open mode -ENOSPC FIFO overflow (the flag is cleared after this error report) -EINVAL no enough user-space buffer to write the whole event -EFAULT seg. fault during copy to user space Possible errors for write(): -ENXIO invalid client or file open mode -ENOMEM malloc failed -EFAULT seg. fault during copy from user space -EINVAL invalid event -EAGAIN no space in output pool -EINTR interrupts while sleep -EMLINK too many hops others depends on return value from driver event_input callback Changes in alsa-lib: 5. Behavior of snd_seq_flush_output() was changed. It flushes data in output buffer as much as possible. This has two advantages. One is that most data can be sent at one call, and another is that the error in write() can be detected directly from this function. The demerit of this implementation is that in non-blocking mode, it tries twice write() even if write pool of sequencer is full, which is not actually error. In this case, flush_output() always returns -EAGAIN error code. After an error is detected (except for -EAGAIN in non-blocking mode), you should remove the error event via snd_seq_extract_output() as below. Otherwise, it'll remain in output buffer and cause the same error again. 6. Some functions were added: snd_seq_exract_output(seq, &event) This extracts the first event on *output* buffer. This will be useful to know (and remove) the event which causes error in write(). snd_seq_event_input_pending(seq, fetch) Retunrs the number of events on input buffer. If no events exist in input buffer, it fetches from sequencer (only when flag is true). snd_seq_event_input_selective(seq, &ev, type, blocking) Retrieve the event from input with the given event type. If blocking is true, it waits until the target event is received. It'll be useful for checking bounced error or waiting for hand-shake results (eg. loading insruments). |
||
---|---|---|
doc | ||
include | ||
src | ||
test | ||
utils | ||
acconfig.h | ||
acinclude.m4 | ||
ChangeLog | ||
config.guess | ||
config.sub | ||
configure.in | ||
COPYING | ||
cvscompile | ||
INSTALL | ||
install-sh | ||
ltconfig | ||
ltmain.sh | ||
Makefile.am | ||
missing | ||
mkinstalldirs |