~cldunlap1/ubuntu/oneiric/alsa-utils/fix-for-816388

« back to all changes in this revision

Viewing changes to debian/patches/backport-fixes-head.patch

  • Committer: Bazaar Package Importer
  • Author(s): Daniel T Chen
  • Date: 2010-02-03 01:19:33 UTC
  • mfrom: (1.2.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20100203011933-xl5mh2yyc4gfkp9h
Tags: 1.0.22-0ubuntu1
* New upstream release
* debian/patches/:
  - alsactl_brace.patch:
  - show_avail_formats.patch:
  - dont_free_if_init_file_doesnt_exist.patch: Applied upstream.
  + backport-fixes-head.patch: (c2eaf8, 0034b1, cdc496)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
5
@@ -602,6 +602,8 @@
 
6
                break;
 
7
        }
 
8
        if (level & LEVEL_BASIC) {
 
9
+               if (!snd_ctl_elem_info_is_readable(info))
 
10
+                       goto __skip_read;
 
11
                if ((err = snd_hctl_elem_read(elem, control)) < 0) {
 
12
                        error("Control %s element read error: %s\n", card, snd_strerror(err));
 
13
                        return err;
 
14
@@ -638,6 +640,7 @@
 
15
                        }
 
16
                }
 
17
                printf("\n");
 
18
+             __skip_read:
 
19
                if (!snd_ctl_elem_info_is_tlv_readable(info))
 
20
                        goto __skip_tlv;
 
21
                tlv = malloc(4096);
 
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
 
26
@@ -689,6 +689,7 @@
 
27
   double phase = 0;
 
28
   int    err, n;
 
29
 
 
30
+  fflush(stdout);
 
31
   if (test_type == TEST_WAV) {
 
32
     int bufsize = snd_pcm_frames_to_bytes(handle, period_size);
 
33
     n = 0;
 
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
 
38
@@ -95,122 +95,63 @@
 
39
        return p;
 
40
 }
 
41
 
 
42
-static int is_input(snd_ctl_t *ctl, int card, int device, int sub)
 
43
-{
 
44
-       snd_rawmidi_info_t *info;
 
45
-       int err;
 
46
-
 
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);
 
51
-       
 
52
-       if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
 
53
-               return err;
 
54
-       else if (err == 0)
 
55
-               return 1;
 
56
-
 
57
-       return 0;
 
58
-}
 
59
-
 
60
-static int is_output(snd_ctl_t *ctl, int card, int device, int sub)
 
61
-{
 
62
-       snd_rawmidi_info_t *info;
 
63
-       int err;
 
64
-
 
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);
 
69
-       
 
70
-       if ((err = snd_ctl_rawmidi_info(ctl, info)) < 0 && err != -ENXIO)
 
71
-               return err;
 
72
-       else if (err == 0)
 
73
-               return 1;
 
74
-
 
75
-       return 0;
 
76
-}
 
77
-
 
78
 static void list_device(snd_ctl_t *ctl, int card, int device)
 
79
 {
 
80
        snd_rawmidi_info_t *info;
 
81
        const char *name;
 
82
        const char *sub_name;
 
83
        int subs, subs_in, subs_out;
 
84
-       int sub, in, out;
 
85
+       int sub;
 
86
        int err;
 
87
 
 
88
        snd_rawmidi_info_alloca(&info);
 
89
        snd_rawmidi_info_set_device(info, device);
 
90
 
 
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);
 
95
+       if (err >= 0)
 
96
+               subs_in = snd_rawmidi_info_get_subdevices_count(info);
 
97
+       else
 
98
+               subs_in = 0;
 
99
+
 
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);
 
105
+       if (err >= 0)
 
106
+               subs_out = snd_rawmidi_info_get_subdevices_count(info);
 
107
+       else
 
108
+               subs_out = 0;
 
109
 
 
110
-       sub = 0;
 
111
-       in = out = 0;
 
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;
 
116
+       if (!subs)
 
117
                return;
 
118
-       } else if (err)
 
119
-               out = 1;
 
120
 
 
121
-       if (err == 0) {
 
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);
 
131
+               if (err < 0) {
 
132
+                       error("cannot get rawmidi information %d:%d:%d: %s\n",
 
133
+                             card, device, sub, snd_strerror(err));
 
134
                        return;
 
135
                }
 
136
-       } else if (err) 
 
137
-               in = 1;
 
138
-
 
139
-       if (err == 0)
 
140
-               return;
 
141
-
 
142
-       name = snd_rawmidi_info_get_name(info);
 
143
-       sub_name = snd_rawmidi_info_get_subdevice_name(info);
 
144
-       if (sub_name[0] == '\0') {
 
145
-               if (subs == 1) {
 
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' : ' ',
 
154
                               card, device, name);
 
155
-               } else
 
156
-                       printf("%c%c  hw:%d,%d    %s (%d subdevices)\n",
 
157
-                              in ? 'I' : ' ', out ? 'O' : ' ',
 
158
-                              card, device, name, subs);
 
159
-       } else {
 
160
-               sub = 0;
 
161
-               for (;;) {
 
162
+                       if (subs > 1)
 
163
+                               printf(" (%d subdevices)", subs);
 
164
+                       putchar('\n');
 
165
+                       break;
 
166
+               } else {
 
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);
 
172
-                       if (++sub >= subs)
 
173
-                               break;
 
174
-
 
175
-                       in = is_input(ctl, card, device, sub);
 
176
-                       out = is_output(ctl, card, device, sub);
 
177
-                       snd_rawmidi_info_set_subdevice(info, sub);
 
178
-                       if (out) {
 
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));
 
183
-                                       break;
 
184
-                               } 
 
185
-                       } else {
 
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));
 
190
-                                       break;
 
191
-                               }
 
192
-                       }
 
193
-                       sub_name = snd_rawmidi_info_get_subdevice_name(info);
 
194
                }
 
195
        }
 
196
 }