--- alsa-lib-1.0.9rc2/src/mixer/mixer.c.old 2005-04-22 14:15:33.000000000 +0200 +++ alsa-lib-1.0.9rc2/src/mixer/mixer.c 2005-04-22 14:27:40.000000000 +0200 @@ -520,14 +520,22 @@ return c1->class->compare(c1, c2); } +static snd_mixer_t *qsort_mixer; typedef int (*qsort_func)(const void *, const void *); + +static int compar(const void *a, const void *b) { + return qsort_mixer->compare(*(const snd_mixer_elem_t * const *) a, + *(const snd_mixer_elem_t * const *) b); +} + static int snd_mixer_sort(snd_mixer_t *mixer) { unsigned int k; assert(mixer); assert(mixer->compare); INIT_LIST_HEAD(&mixer->elems); - qsort(mixer->pelems, mixer->count, sizeof(snd_mixer_elem_t*), (qsort_func)mixer->compare); + qsort_mixer = mixer; + qsort(mixer->pelems, mixer->count, sizeof(snd_mixer_elem_t*), compar); for (k = 0; k < mixer->count; k++) list_add_tail(&mixer->pelems[k]->list, &mixer->elems); return 0;