Re: Duplicate entries in the output of "mixerctl"

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <misc@...>
Date: Thursday, December 13, 2007 - 3:01 pm

Hi,

Amarendra Godbole writes:

> mixerctl output has some duplicate entries (duplicated names, but

I see... this happens when an item has both input and output
levels that can be adjusted.

Could you try this diff please? It should give you something
more like:

outputs.line=124,124
inputs.line=85,85

Thanks!

Index: azalia.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.c,v
retrieving revision 1.45
diff -u -p -r1.45 azalia.c
--- azalia.c 25 Nov 2007 18:13:40 -0000 1.45
+++ azalia.c 13 Dec 2007 18:37:58 -0000
@@ -1609,13 +1609,24 @@ azalia_widget_label_widgets(codec_t *cod
w = &codec->w[i];
if (w->type == COP_AWTYPE_PIN_COMPLEX) {
pins[w->d.pin.device]++;
- if (pins[w->d.pin.device] > 1)
- snprintf(w->name, sizeof(w->name), "%s%d",
- pin_devices[w->d.pin.device],
- pins[w->d.pin.device]);
- else
- snprintf(w->name, sizeof(w->name), "%s",
- pin_devices[w->d.pin.device]);
+ if (w->d.pin.device == CORB_CD_LINEIN) {
+ pins[CORB_CD_LINEOUT]++;
+ if (pins[CORB_CD_LINEOUT] > 1)
+ snprintf(w->name, sizeof(w->name), "%s%d",
+ pin_devices[CORB_CD_LINEOUT],
+ pins[CORB_CD_LINEOUT]);
+ else
+ snprintf(w->name, sizeof(w->name), "%s",
+ pin_devices[CORB_CD_LINEOUT]);
+ } else {
+ if (pins[w->d.pin.device] > 1)
+ snprintf(w->name, sizeof(w->name), "%s%d",
+ pin_devices[w->d.pin.device],
+ pins[w->d.pin.device]);
+ else
+ snprintf(w->name, sizeof(w->name), "%s",
+ pin_devices[w->d.pin.device]);
+ }
} else {
types[w->type]++;
if (types[w->type] > 1)
Index: azalia_codec.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia_codec.c,v
retrieving revision 1.45
diff -u -p -r1.45 azalia_codec.c
--- azalia_codec.c 6 Dec 2007 19:58:48 -0000 1.45
+++ azalia_codec.c 13 Dec 2007 18:37:33 -0000
@@ -529,9 +529,7 @@ azalia_generic_mixer_init(codec_t *this)
snprintf(d->label.name, sizeof(d->label.name),
"%s.mute", w->name);
d->type = AUDIO_MIXER_ENUM;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -553,9 +551,7 @@ azalia_generic_mixer_init(codec_t *this)
"%s.%s.mute", w->name,
this->w[w->connections[j]].name);
d->type = AUDIO_MIXER_ENUM;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -581,9 +577,7 @@ azalia_generic_mixer_init(codec_t *this)
snprintf(d->label.name, sizeof(d->label.name),
"%s", w->name);
d->type = AUDIO_MIXER_VALUE;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;
@@ -608,9 +602,7 @@ azalia_generic_mixer_init(codec_t *this)
"%s.%s", w->name,
this->w[w->connections[j]].name);
d->type = AUDIO_MIXER_VALUE;
- if (w->type == COP_AWTYPE_PIN_COMPLEX)
- d->mixer_class = AZ_CLASS_OUTPUT;
- else if (w->type == COP_AWTYPE_AUDIO_INPUT)
+ if (w->type == COP_AWTYPE_AUDIO_INPUT)
d->mixer_class = AZ_CLASS_RECORD;
else
d->mixer_class = AZ_CLASS_INPUT;

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: Duplicate entries in the output of "mixerctl", Deanna Phillips, (Thu Dec 13, 3:01 pm)
Re: Duplicate entries in the output of "mixerctl", Amarendra Godbole, (Thu Dec 27, 4:05 am)