Set proper target type.
Set proper max and step for mux control.
This commit is contained in:
parent
7c1e9361a3
commit
d7d1c3846b
|
@ -309,7 +309,9 @@ static void MIX_FillLineControls(struct mixer* mix, int c, DWORD lineID,
|
||||||
lstrcpynA(mc->ctrl.szShortName, "Mixer", MIXER_SHORT_NAME_CHARS);
|
lstrcpynA(mc->ctrl.szShortName, "Mixer", MIXER_SHORT_NAME_CHARS);
|
||||||
lstrcpynA(mc->ctrl.szName, "Mixer", MIXER_LONG_NAME_CHARS);
|
lstrcpynA(mc->ctrl.szName, "Mixer", MIXER_LONG_NAME_CHARS);
|
||||||
memset(&mc->ctrl.Bounds, 0, sizeof(mc->ctrl.Bounds));
|
memset(&mc->ctrl.Bounds, 0, sizeof(mc->ctrl.Bounds));
|
||||||
|
mc->ctrl.Bounds.s1.dwMaximum = mc->ctrl.cMultipleItems - 1;
|
||||||
memset(&mc->ctrl.Metrics, 0, sizeof(mc->ctrl.Metrics));
|
memset(&mc->ctrl.Metrics, 0, sizeof(mc->ctrl.Metrics));
|
||||||
|
mc->ctrl.Metrics.cSteps = mc->ctrl.cMultipleItems;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -630,15 +632,17 @@ static DWORD MIX_GetLineInfoDst(struct mixer* mix, LPMIXERLINEA lpMl,
|
||||||
lpMl->dwDestination = dst;
|
lpMl->dwDestination = dst;
|
||||||
switch (dst)
|
switch (dst)
|
||||||
{
|
{
|
||||||
case 0:
|
case LINEID_SPEAKER:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
|
||||||
mask = mix->devMask;
|
mask = mix->devMask;
|
||||||
j = SOUND_MIXER_VOLUME;
|
j = SOUND_MIXER_VOLUME;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEOUT;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case LINEID_RECORD:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
|
||||||
mask = mix->recMask;
|
mask = mix->recMask;
|
||||||
j = SOUND_MIXER_RECLEV;
|
j = SOUND_MIXER_RECLEV;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEIN;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("shouldn't happen\n");
|
FIXME("shouldn't happen\n");
|
||||||
|
@ -691,26 +695,32 @@ static DWORD MIX_GetLineInfoSrc(struct mixer* mix, LPMIXERLINEA lpMl,
|
||||||
case SOUND_MIXER_SYNTH:
|
case SOUND_MIXER_SYNTH:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_MIDIOUT;
|
||||||
break;
|
break;
|
||||||
case SOUND_MIXER_CD:
|
case SOUND_MIXER_CD:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
|
||||||
break;
|
break;
|
||||||
case SOUND_MIXER_LINE:
|
case SOUND_MIXER_LINE:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_LINE;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_LINE;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
|
||||||
break;
|
break;
|
||||||
case SOUND_MIXER_MIC:
|
case SOUND_MIXER_MIC:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEIN;
|
||||||
break;
|
break;
|
||||||
case SOUND_MIXER_PCM:
|
case SOUND_MIXER_PCM:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEOUT;
|
||||||
break;
|
break;
|
||||||
case SOUND_MIXER_IMIX:
|
case SOUND_MIXER_IMIX:
|
||||||
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED;
|
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED;
|
||||||
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
|
||||||
|
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WARN("Index %ld not handled.\n", idx);
|
WARN("Index %ld not handled.\n", idx);
|
||||||
|
@ -797,8 +807,8 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo)
|
||||||
lpMl->dwDestination);
|
lpMl->dwDestination);
|
||||||
switch (lpMl->dwDestination)
|
switch (lpMl->dwDestination)
|
||||||
{
|
{
|
||||||
case 0: mask = mix->devMask; break;
|
case LINEID_SPEAKER: mask = mix->devMask; break;
|
||||||
case 1: mask = mix->recMask; break;
|
case LINEID_RECORD: mask = mix->recMask; break;
|
||||||
default:
|
default:
|
||||||
WARN("invalid parameter\n");
|
WARN("invalid parameter\n");
|
||||||
return MMSYSERR_INVALPARAM;
|
return MMSYSERR_INVALPARAM;
|
||||||
|
@ -893,7 +903,7 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
lpMl->Target.dwType = MIXERLINE_TARGETTYPE_AUX; /* FIXME */
|
if ((fdwInfo & MIXER_GETLINEINFOF_QUERYMASK) != MIXER_GETLINEINFOF_TARGETTYPE) {
|
||||||
lpMl->Target.dwDeviceID = 0xFFFFFFFF;
|
lpMl->Target.dwDeviceID = 0xFFFFFFFF;
|
||||||
lpMl->Target.wMid = WINE_MIXER_MANUF_ID;
|
lpMl->Target.wMid = WINE_MIXER_MANUF_ID;
|
||||||
lpMl->Target.wPid = WINE_MIXER_PRODUCT_ID;
|
lpMl->Target.wPid = WINE_MIXER_PRODUCT_ID;
|
||||||
|
@ -902,6 +912,7 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo)
|
||||||
strcpy(lpMl->Target.szPname, mix->name);
|
strcpy(lpMl->Target.szPname, mix->name);
|
||||||
else
|
else
|
||||||
strcpy(lpMl->Target.szPname, WINE_MIXER_NAME);
|
strcpy(lpMl->Target.szPname, WINE_MIXER_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue