1
Index: alsa-utils-1.0.22/amixer/amixer.c
2
===================================================================
3
--- alsa-utils-1.0.22.orig/amixer/amixer.c 2010-02-03 01:55:23.000000000 -0500
4
+++ alsa-utils-1.0.22/amixer/amixer.c 2010-02-03 01:55:23.000000000 -0500
8
if (level & LEVEL_BASIC) {
9
+ if (!snd_ctl_elem_info_is_readable(info))
11
if ((err = snd_hctl_elem_read(elem, control)) < 0) {
12
error("Control %s element read error: %s\n", card, snd_strerror(err));
19
if (!snd_ctl_elem_info_is_tlv_readable(info))
22
Index: alsa-utils-1.0.22/speaker-test/speaker-test.c
23
===================================================================
24
--- alsa-utils-1.0.22.orig/speaker-test/speaker-test.c 2010-02-03 01:50:20.000000000 -0500
25
+++ alsa-utils-1.0.22/speaker-test/speaker-test.c 2010-02-03 01:55:23.000000000 -0500
31
if (test_type == TEST_WAV) {
32
int bufsize = snd_pcm_frames_to_bytes(handle, period_size);
34
Index: alsa-utils-1.0.22/amidi/amidi.c
35
===================================================================
36
--- alsa-utils-1.0.22.orig/amidi/amidi.c 2010-02-03 01:55:29.000000000 -0500
37
+++ alsa-utils-1.0.22/amidi/amidi.c 2010-02-03 01:55:48.000000000 -0500
42
-static int is_input(snd_ctl_t *ctl, int card, int device, int sub)
44
- snd_rawmidi_info_t *info;
47
- snd_rawmidi_info_alloca(&info);
48
- snd_rawmidi_info_set_device(info, device);
49
- snd_rawmidi_info_set_subdevice(info, sub);
50
- snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
52
- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
60
-static int is_output(snd_ctl_t *ctl, int card, int device, int sub)
62
- snd_rawmidi_info_t *info;
65
- snd_rawmidi_info_alloca(&info);
66
- snd_rawmidi_info_set_device(info, device);
67
- snd_rawmidi_info_set_subdevice(info, sub);
68
- snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_OUTPUT);
70
- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
78
static void list_device(snd_ctl_t *ctl, int card, int device)
80
snd_rawmidi_info_t *info;
83
int subs, subs_in, subs_out;
88
snd_rawmidi_info_alloca(&info);
89
snd_rawmidi_info_set_device(info, device);
91
snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
92
- snd_ctl_rawmidi_info(ctl, info);
93
- subs_in = snd_rawmidi_info_get_subdevices_count(info);
94
+ err = snd_ctl_rawmidi_info(ctl, info);
96
+ subs_in = snd_rawmidi_info_get_subdevices_count(info);
100
snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_OUTPUT);
101
- snd_ctl_rawmidi_info(ctl, info);
102
- subs_out = snd_rawmidi_info_get_subdevices_count(info);
103
- subs = subs_in > subs_out ? subs_in : subs_out;
104
+ err = snd_ctl_rawmidi_info(ctl, info);
106
+ subs_out = snd_rawmidi_info_get_subdevices_count(info);
112
- if ((err = is_output(ctl, card, device, sub)) < 0) {
113
- error("cannot get rawmidi information %d:%d: %s",
114
- card, device, snd_strerror(err));
115
+ subs = subs_in > subs_out ? subs_in : subs_out;
122
- if ((err = is_input(ctl, card, device, sub)) < 0) {
123
- error("cannot get rawmidi information %d:%d: %s",
124
- card, device, snd_strerror(err));
125
+ for (sub = 0; sub < subs; ++sub) {
126
+ snd_rawmidi_info_set_stream(info, sub < subs_in ?
127
+ SND_RAWMIDI_STREAM_INPUT :
128
+ SND_RAWMIDI_STREAM_OUTPUT);
129
+ snd_rawmidi_info_set_subdevice(info, sub);
130
+ err = snd_ctl_rawmidi_info(ctl, info);
132
+ error("cannot get rawmidi information %d:%d:%d: %s\n",
133
+ card, device, sub, snd_strerror(err));
142
- name = snd_rawmidi_info_get_name(info);
143
- sub_name = snd_rawmidi_info_get_subdevice_name(info);
144
- if (sub_name[0] == '\0') {
146
- printf("%c%c hw:%d,%d %s\n",
147
- in ? 'I' : ' ', out ? 'O' : ' ',
148
+ name = snd_rawmidi_info_get_name(info);
149
+ sub_name = snd_rawmidi_info_get_subdevice_name(info);
150
+ if (sub == 0 && sub_name[0] == '\0') {
151
+ printf("%c%c hw:%d,%d %s",
152
+ sub < subs_in ? 'I' : ' ',
153
+ sub < subs_out ? 'O' : ' ',
156
- printf("%c%c hw:%d,%d %s (%d subdevices)\n",
157
- in ? 'I' : ' ', out ? 'O' : ' ',
158
- card, device, name, subs);
163
+ printf(" (%d subdevices)", subs);
167
printf("%c%c hw:%d,%d,%d %s\n",
168
- in ? 'I' : ' ', out ? 'O' : ' ',
169
+ sub < subs_in ? 'I' : ' ',
170
+ sub < subs_out ? 'O' : ' ',
171
card, device, sub, sub_name);
175
- in = is_input(ctl, card, device, sub);
176
- out = is_output(ctl, card, device, sub);
177
- snd_rawmidi_info_set_subdevice(info, sub);
179
- snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_OUTPUT);
180
- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0) {
181
- error("cannot get rawmidi information %d:%d:%d: %s",
182
- card, device, sub, snd_strerror(err));
186
- snd_rawmidi_info_set_stream(info, SND_RAWMIDI_STREAM_INPUT);
187
- if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0) {
188
- error("cannot get rawmidi information %d:%d:%d: %s",
189
- card, device, sub, snd_strerror(err));
193
- sub_name = snd_rawmidi_info_get_subdevice_name(info);