http://bugs.winehq.org/show_bug.cgi?id=14559
--- Comment #7 from xbx xavierb@gmail.com 2009-05-21 05:47:10 --- As I'm afraid I don't understand a thing to alsamixer nor win32 mixer, I don't even know what's going on, But I tried this change to see what would happen:
======================== diff --git a/dlls/winealsa.drv/mixer.c b/dlls/winealsa.drv/mixer.c index e5cd347..0f7642c 100644 --- a/dlls/winealsa.drv/mixer.c +++ b/dlls/winealsa.drv/mixer.c @@ -211,6 +211,9 @@ static const struct mixerlinetype { { "Phone", MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE, }, { "Digital", MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, }, { "Front Mic", MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, }, + { "External Mic", MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, }, + { "Internal Mic", MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, }, + { "Docking Mic", MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE, }, };
/* Map name to MIXERLINE_COMPONENTTYPE_XXX */ @@ -468,6 +471,9 @@ static void ALSA_MixerInit(void) * If there are multiple Master or Captures, all except 1 will be added as slaves */ for (elem = snd_mixer_first_elem(mixdev[mixnum].mix); elem; elem = snd_mixer_elem_next(elem)) + { + TRACE(" ===== MixerInit: elem: %s, capture: %d\n", snd_mixer_selem_get_name(elem), snd_mixer_selem_has_playback_vol + if (!strcasecmp(snd_mixer_selem_get_name(elem), "Master") && !mastelem) mastelem = elem; else if (!strcasecmp(snd_mixer_selem_get_name(elem), "Capture") && !captelem) @@ -496,6 +502,7 @@ static void ALSA_MixerInit(void) ++(mixdev[mixnum].chans); } } + }
/* Add master channel, uncounted channels and an extra for capture */ mixdev[mixnum].chans += !!mastelem + !!headelem + !!pcmelem + 1;
========================
I still doesn't work of course, and the mixer init log now is:
trace:mixer:ALSA_mxdMessage (0000, DRVM_INIT, 00000000, 00000000, 00000000); trace:mixer:ALSA_MixerInit ===== MixerInit: elem: Master, capture: 1 trace:mixer:ALSA_MixerInit ===== MixerInit: elem: PCM, capture: 1 trace:mixer:blacklisted PCM: 0 trace:mixer:getcomponenttype 2 -> PCM trace:mixer:ALSA_MixerInit ===== MixerInit: elem: IEC958, capture: 0 trace:mixer:blacklisted IEC958: 1 trace:mixer:ALSA_MixerInit ===== MixerInit: elem: IEC958 Default PCM, capture: 0 trace:mixer:blacklisted IEC958 Default PCM: 1 trace:mixer:ALSA_MixerInit ===== MixerInit: elem: Digital, capture: 0 trace:mixer:blacklisted Digital: 0 trace:mixer:getcomponenttype 11 -> Digital trace:mixer:ALSA_MixerInit ===== MixerInit: elem: Docking Mic, capture: 1 trace:mixer:blacklisted Docking Mic: 0 trace:mixer:getcomponenttype 15 -> Docking Mic trace:mixer:ALSA_MixerInit ===== MixerInit: elem: External Mic, capture: 1 trace:mixer:blacklisted External Mic: 0 trace:mixer:getcomponenttype 13 -> External Mic trace:mixer:ALSA_MixerInit ===== MixerInit: elem: Internal Mic, capture: 1 trace:mixer:blacklisted Internal Mic: 0 trace:mixer:getcomponenttype 14 -> Internal Mic warn:mixer:ALSA_MixerInit No use enabling capture part of mixer, capture control found: no, amount of capture controls: 4