wineoss mixer patch
Robert Reif
reif at earthlink.net
Fri Aug 27 13:08:32 CDT 2004
Set proper target type.
Set proper max and step for mux control.
-------------- next part --------------
Index: dlls/winmm/wineoss/mixer.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/mixer.c,v
retrieving revision 1.26
diff -u -r1.26 mixer.c
--- dlls/winmm/wineoss/mixer.c 22 Aug 2004 22:26:48 -0000 1.26
+++ dlls/winmm/wineoss/mixer.c 27 Aug 2004 18:04:35 -0000
@@ -309,7 +309,9 @@
lstrcpynA(mc->ctrl.szShortName, "Mixer", MIXER_SHORT_NAME_CHARS);
lstrcpynA(mc->ctrl.szName, "Mixer", MIXER_LONG_NAME_CHARS);
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));
+ mc->ctrl.Metrics.cSteps = mc->ctrl.cMultipleItems;
break;
default:
@@ -630,15 +632,17 @@
lpMl->dwDestination = dst;
switch (dst)
{
- case 0:
+ case LINEID_SPEAKER:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
mask = mix->devMask;
j = SOUND_MIXER_VOLUME;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEOUT;
break;
- case 1:
+ case LINEID_RECORD:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
mask = mix->recMask;
j = SOUND_MIXER_RECLEV;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEIN;
break;
default:
FIXME("shouldn't happen\n");
@@ -691,26 +695,32 @@
case SOUND_MIXER_SYNTH:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_MIDIOUT;
break;
case SOUND_MIXER_CD:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
break;
case SOUND_MIXER_LINE:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_LINE;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
break;
case SOUND_MIXER_MIC:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEIN;
break;
case SOUND_MIXER_PCM:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_WAVEOUT;
break;
case SOUND_MIXER_IMIX:
lpMl->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED;
lpMl->fdwLine |= MIXERLINE_LINEF_SOURCE;
+ lpMl->Target.dwType = MIXERLINE_TARGETTYPE_UNDEFINED;
break;
default:
WARN("Index %ld not handled.\n", idx);
@@ -797,8 +807,8 @@
lpMl->dwDestination);
switch (lpMl->dwDestination)
{
- case 0: mask = mix->devMask; break;
- case 1: mask = mix->recMask; break;
+ case LINEID_SPEAKER: mask = mix->devMask; break;
+ case LINEID_RECORD: mask = mix->recMask; break;
default:
WARN("invalid parameter\n");
return MMSYSERR_INVALPARAM;
@@ -893,15 +903,16 @@
break;
}
- lpMl->Target.dwType = MIXERLINE_TARGETTYPE_AUX; /* FIXME */
- lpMl->Target.dwDeviceID = 0xFFFFFFFF;
- lpMl->Target.wMid = WINE_MIXER_MANUF_ID;
- lpMl->Target.wPid = WINE_MIXER_PRODUCT_ID;
- lpMl->Target.vDriverVersion = WINE_MIXER_VERSION;
- if (mix->name)
- strcpy(lpMl->Target.szPname, mix->name);
- else
- strcpy(lpMl->Target.szPname, WINE_MIXER_NAME);
+ if ((fdwInfo & MIXER_GETLINEINFOF_QUERYMASK) != MIXER_GETLINEINFOF_TARGETTYPE) {
+ lpMl->Target.dwDeviceID = 0xFFFFFFFF;
+ lpMl->Target.wMid = WINE_MIXER_MANUF_ID;
+ lpMl->Target.wPid = WINE_MIXER_PRODUCT_ID;
+ lpMl->Target.vDriverVersion = WINE_MIXER_VERSION;
+ if (mix->name)
+ strcpy(lpMl->Target.szPname, mix->name);
+ else
+ strcpy(lpMl->Target.szPname, WINE_MIXER_NAME);
+ }
return ret;
}
More information about the wine-patches
mailing list