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