wavemap GetDevCaps patch

Robert Reif reif at earthlink.net
Mon May 31 07:05:25 CDT 2004


Returns proper error code when trying to get caps when no devices present.
-------------- next part --------------
Index: dlls/winmm/wavemap/wavemap.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wavemap/wavemap.c,v
retrieving revision 1.32
diff -u -r1.32 wavemap.c
--- dlls/winmm/wavemap/wavemap.c	5 Sep 2003 23:08:27 -0000	1.32
+++ dlls/winmm/wavemap/wavemap.c	31 May 2004 11:59:54 -0000
@@ -391,6 +399,9 @@
     /* if opened low driver, forward message */
     if (WAVEMAP_IsData(wom))
 	return waveOutGetDevCapsA((UINT)wom->u.out.hInnerWave, lpWaveCaps, dwParam2);
+    /* else if no drivers, nothing to map so return bad device */
+    if (waveOutGetNumDevs() == 0)
+        return MMSYSERR_BADDEVICEID;
     /* otherwise, return caps of mapper itself */
     if (wDevID == (UINT)-1 || wDevID == (UINT16)-1) {
 	lpWaveCaps->wMid = 0x00FF;
@@ -398,6 +409,8 @@
 	lpWaveCaps->vDriverVersion = 0x0100;
 	strcpy(lpWaveCaps->szPname, "Wine wave out mapper");
 	lpWaveCaps->dwFormats =
+            WAVE_FORMAT_96M08 | WAVE_FORMAT_96S08 | WAVE_FORMAT_96M16 | WAVE_FORMAT_96S16 |
+            WAVE_FORMAT_48M08 | WAVE_FORMAT_48S08 | WAVE_FORMAT_48M16 | WAVE_FORMAT_48S16 |
 	    WAVE_FORMAT_4M08 | WAVE_FORMAT_4S08 | WAVE_FORMAT_4M16 | WAVE_FORMAT_4S16 |
 	    WAVE_FORMAT_2M08 | WAVE_FORMAT_2S08 | WAVE_FORMAT_2M16 | WAVE_FORMAT_2S16 |
 	    WAVE_FORMAT_1M08 | WAVE_FORMAT_1S08 | WAVE_FORMAT_1M16 | WAVE_FORMAT_1S16;
@@ -823,6 +842,9 @@
     /* if opened low driver, forward message */
     if (WAVEMAP_IsData(wim))
 	return waveInGetDevCapsA((UINT)wim->u.in.hInnerWave, lpWaveCaps, dwParam2);
+    /* else if no drivers, nothing to map so return bad device */
+    if (waveInGetNumDevs() == 0)
+        return MMSYSERR_BADDEVICEID;
     /* otherwise, return caps of mapper itself */
     if (wDevID == (UINT)-1 || wDevID == (UINT16)-1) {
 	lpWaveCaps->wMid = 0x00FF;
@@ -830,6 +852,8 @@
 	lpWaveCaps->vDriverVersion = 0x0001;
 	strcpy(lpWaveCaps->szPname, "Wine wave in mapper");
 	lpWaveCaps->dwFormats =
+            WAVE_FORMAT_96M08 | WAVE_FORMAT_96S08 | WAVE_FORMAT_96M16 | WAVE_FORMAT_96S16 |
+            WAVE_FORMAT_48M08 | WAVE_FORMAT_48S08 | WAVE_FORMAT_48M16 | WAVE_FORMAT_48S16 |
 	    WAVE_FORMAT_4M08 | WAVE_FORMAT_4S08 | WAVE_FORMAT_4M16 | WAVE_FORMAT_4S16 |
 	    WAVE_FORMAT_2M08 | WAVE_FORMAT_2S08 | WAVE_FORMAT_2M16 | WAVE_FORMAT_2S16 |
 	    WAVE_FORMAT_1M08 | WAVE_FORMAT_1S08 | WAVE_FORMAT_1M16 | WAVE_FORMAT_1S16;


More information about the wine-patches mailing list