Commit graph

52 commits

Author SHA1 Message Date
Jaroslav Kysela
5b9041bced Change FSF address (Franklin Street)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2017-11-14 14:29:26 +01:00
Takashi Sakamoto
5d079c7608 hctl: remove assertion from element event handler because removal event overwrites all of queued events
In ALSA control core, when several events occurs for an element, they're
represented bit mask (struct snd_ctl_event.data.elem.mask). Thus userspace
applications can handles these events separately in one I/O operation.

There's an exception; removal event. This is represented by all of bits in
the mask. Therefore, when a removal event occurs for an element, all of
queued events for the element are overwritten.

This works worse for a combination of applications which add/remove control
elements and applications which keep a cache of elements. For example,
let's assume a case that:

1.some elements are added by ioctl(SNDRV_CTL_IOCTL_ELEM_ADD).
2.ALSA control core handles the request and queues 'add' event.
3.applications don't read the event yet.
4.the elements are removed by ioctl(SNDRV_CTL_IOCTL_ELEM_REMOVE)
5.ALSA control core handles the request and queues 'removal' event by
  overwriting queued events.
6.applications read the event at last.
7.the applications cannot find removed elements in their cache data.

Especially, when applications use hctl interface of ALSA userspace library,
this situation occurs because the interface is designed to keep element
cache implicitly inner the library. PulseAudio is such an application. When
executing a test program of ALSA library (test/user-ctl-element-set.c),
pulseaudio process aborts due to assertion at calls of
snd_hctl_handle_events().

The rule to represent events is in ALSA kernel/userspace interfaces
(UAPI header) and it's difficult to improve the rule. Therefore,
developers should pay enough attention to the fact that userspace
applications can receive removal events for elements which are not
notified with 'add' event.

For this reason, this commit removes assertion from event handler of ALSA
hctl API.

CC: pulseaudio-discuss@lists.freedesktop.org
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2016-07-11 12:44:38 +02:00
Jaroslav Kysela
e23fb2c4de control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions
Upon an interrupt, it is necessary to abort the wait loops with the EINTR
error code. Introduce snd_*_abort() functions to handle this case.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2013-04-08 13:28:03 +02:00
Martin Sandsmark
86e27cdbf1 hctl: Remove a useless assert
The case where the element is unavailable (for example gone away since
the event was created) is handled beneath.

See also bug 5471.
	https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5471

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-07-05 10:09:06 +02:00
Takashi Iwai
4de76c9b06 Remove redefinition of _GNU_SOURCE and __USE_GNU
Now _GNU_SOURCE is already defined globally in configure.in.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-11-08 09:28:07 +01:00
Jaroslav Kysela
0110d62043 hcontrol: fix compare_default function to handle also id.device and id.subdevice
In case when kcontrol differs only by device or subdevice numbers, the
find function can give wrong results.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-10-06 10:46:54 +02:00
Diego E. 'Flameeyes' Pettenò
03388ca6d3 Mark static tables as constant when possible.
This makes it possible to write them to .data.rel.ro or to .rodata if
there is no relocation involved (arrays of character arrays).

Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
2008-11-21 22:39:38 +01:00
Jaroslav Kysela
d25e281230 Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz 2007-10-15 10:24:55 +02:00
Takashi Iwai
70e4ec9d08 Allow build without libdl and libpthread
Allow building alsa-lib without libdl and libpthread.
Added new options to configure, --with-libdl and --with-pthread.
2007-03-22 00:48:18 +01:00
Takashi Iwai
ae76129999 Move dB parser to mixer abstraction
Moved the parser of dB value to mixer abstraction from hcontrol layer.
Also, cleaned up codes.
2006-07-28 14:36:37 +02:00
Jaroslav Kysela
c4a5efeba3 mixer - cleanups for dB scale parsing 2006-07-27 10:45:25 +02:00
James Courtier-Dutton
5e3fc87888 Implement support for dB gain display in alsamixer. 2006-07-22 14:56:48 +01:00
Jaroslav Kysela
91273c228f Fix examples for PCM API. Fix dogygen warnings. 2006-07-11 21:48:51 +02:00
Jaroslav Kysela
c7a0708a23 Control API - add TLV support
snd_ctl_elem_tlv_read
snd_ctl_elem_tlv_write
snd_ctl_elem_tlv_command
snd_ctl_elem_info_is_tlv_readable
snd_ctl_elem_info_is_tlv_writable
snd_ctl_elem_info_is_tlv_commandable
snd_hctl_elem_tlv_read
snd_hctl_elem_tlv_write
snd_hctl_elem_tlv_command
2006-07-05 17:42:16 +02:00
Pierre Ossman
2a7f35347b Make snd_hctl_wait() respect the API
snd_hctl_wait() currently makes a lot of assumptions that fall outside
the defined API. snd_pcm_wait(), however, follows the API nicely so the
new version is based on that.

Signed-off-by: Pierre Ossman <ossman@cendio.se>
2006-05-26 17:27:00 +02:00
Clemens Ladisch
4433248bf3 remove superfluous free() checks
free() correctly handles NULL pointers, so we can omit explicit checks
for that condition.
2006-02-27 09:58:32 +00:00
Takashi Iwai
7a89e3bbca Fix compile warnings with gcc-4
Fixed compile warnings with gcc-4 about pointer signedness.
2005-06-28 10:24:44 +00:00
Takashi Iwai
36f715c59a Add external shared object support
- Add external shared object support
- Add poll_* internal ops
- Allow multiple poll_fds
2005-06-09 17:09:24 +00:00
Takashi Iwai
087184b0f9 Fix doxygen documents
Fix the warnings of doxygen parsing.
Add some missing documentation.
2005-05-24 14:14:28 +00:00
Takashi Iwai
ef5b272b28 Stephen Cook <siti_veni@lycos.com>:
- removed the function-in-function for qsort.
  replaced with a static function with a static variable.
  now protected with pthread mutex.
2004-01-26 15:54:10 +00:00
Jaroslav Kysela
ab61b62cb4 More changes to the ordinary mixer API 2003-10-13 12:06:45 +00:00
Jaroslav Kysela
60585e25fc added snd_hctl_ctl() function
ordinary mixer:
  - revised Ordinary Mixer I/O type
  - sndo_mixer_open() take PCMs rather than strings to pass
    the real relationship
  - an initial version of toplevel alisp script
more alisp development:
  - renamed a* functions to A* functions (acall -> Acall etc.)
  - many improvements (unset*, exfun, Acall pcm_info, Asnderr, Asyserr)
2003-09-09 19:24:35 +00:00
Jaroslav Kysela
92093ae0fe Added snd_hctl_open_ctl() function.
alisp massive extensions and tested ALSA function bindings.
2003-07-27 20:20:26 +00:00
Jaroslav Kysela
853304bbf4 Corrections by Kevin Conder <kconder@interaccess.com> 2002-03-12 20:14:33 +00:00
Jaroslav Kysela
2ca5ace9cb More documentation changes (rawmidi, timer) 2002-02-11 18:11:16 +00:00
Jaroslav Kysela
3e3df2d32b Updated GNU GPL license (address).
Changed GNU LGPL licence from 2.0 to 2.1.
2001-12-30 09:22:54 +00:00
Jaroslav Kysela
0d9a5d0e59 More documentation updates. 2001-07-18 12:17:11 +00:00
Jaroslav Kysela
c20c954f3d Added documentation for instrument and midi event functions.
Removed snd_enum_() macros.
Documentation changes in asoundlib.h.
2001-07-11 14:09:01 +00:00
Jaroslav Kysela
290c2ed8fc Updated the sorting tables and functions. 2001-05-14 11:28:11 +00:00
Jaroslav Kysela
06e79b9828 Changed in the compare_weight counting 2001-05-14 09:43:59 +00:00
Abramo Bagnara
62b2da1186 Documentation generation fixes 2001-03-30 10:12:19 +00:00
Abramo Bagnara
5b50ec848a Lot of cleanings with the help of gcc3 2001-03-29 17:50:28 +00:00
Abramo Bagnara
de4cfc3e4b More documentation. Added mode argument to i/o_stdio_open. 2001-03-29 09:10:46 +00:00
Jaroslav Kysela
53fc0f6332 Added I2S to sort tables. 2001-03-27 15:50:17 +00:00
Abramo Bagnara
7893ea238d Added mode argument to open functions where it was missing. First part of CTL documentation 2001-03-26 12:45:48 +00:00
Jaroslav Kysela
0300bbbbb3 Added more sort rules 2001-03-16 16:46:05 +00:00
Abramo Bagnara
191d03501e Changed descriptors_count 2001-02-18 18:32:30 +00:00
Jaroslav Kysela
cc956312b3 Changed behaviour of poll_descriptors function (returns the filled count of fds).
Added poll_descriptors_count functions.
Added snd_mixer_elem_count function.
2001-02-14 12:15:03 +00:00
Abramo Bagnara
3e97ef3ea0 Changed control to use events mask. Added subscribe ioctl 2001-02-13 21:29:30 +00:00
Abramo Bagnara
fa51799255 Cached compare weight for hctl_elem too 2001-02-13 15:05:00 +00:00
Abramo Bagnara
eed38f2157 My bogus assumption on add_tail semantic 2001-02-13 14:41:38 +00:00
Abramo Bagnara
b260b72fc9 One more fixes to sorting 2001-02-13 14:25:51 +00:00
Jaroslav Kysela
e02f9a9650 Definitely fixed the sorting/find problems for hcontrol & mixer. 2001-02-13 14:07:28 +00:00
Abramo Bagnara
db53ac9b41 Removed Capture Source exceptions. Renamed snd_hctl_elem_get_handle 2001-02-13 11:42:49 +00:00
Abramo Bagnara
460660d4b4 More generic support for poll descriptors 2001-02-12 23:51:49 +00:00
Jaroslav Kysela
a86efa083c More bugfixes (sort, compare, mixer, hcontrol). 2001-02-12 19:24:46 +00:00
Jaroslav Kysela
515d1a6415 Improved mixer sort/compare interface. 2001-02-12 18:10:31 +00:00
Jaroslav Kysela
6f3b01b79c Added sort & compare functions to the mixer API. 2001-02-12 13:29:33 +00:00
Abramo Bagnara
955b9fc335 Fixed handle_events 2001-02-11 17:46:03 +00:00
Abramo Bagnara
a2d3434961 Completed mixer API. Improved iterators. Renamed control values struct. Rewritten simple elements implementation 2001-02-11 15:45:35 +00:00