winmm trace and debug patch

Robert Reif reif at earthlink.net
Sun May 30 21:13:44 CDT 2004


Adds some trace and debug printing.
-------------- next part --------------
Index: dlls/winmm/lolvldrv.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/lolvldrv.c,v
retrieving revision 1.57
diff -u -r1.57 lolvldrv.c
--- dlls/winmm/lolvldrv.c	27 May 2004 20:05:08 -0000	1.57
+++ dlls/winmm/lolvldrv.c	31 May 2004 01:56:29 -0000
@@ -221,7 +221,7 @@
 	    TRACE("Calling message(dev=%u msg=%u usr=0x%08lx p1=0x%08lx p2=0x%08lx)\n",
 		  mld->uDeviceID, wMsg, mld->dwDriverInstance, dwParam1, dwParam2);
             ret = part->u.fnMessage32(mld->uDeviceID, wMsg, mld->dwDriverInstance, dwParam1, dwParam2);
-	    TRACE("=> %lu\n", ret);
+	    TRACE("=> %s\n", WINMM_ErrorToString(ret));
 	} else {
 	    map = llType->Map16To32A(wMsg, &mld->dwDriverInstance, &dwParam1, &dwParam2);
 	    switch (map) {
@@ -238,7 +238,7 @@
 		      mld->uDeviceID, wMsg, mld->dwDriverInstance, dwParam1, dwParam2);
 		ret = part->u.fnMessage32(mld->uDeviceID, wMsg, mld->dwDriverInstance,
 					  dwParam1, dwParam2);
-		TRACE("=> %lu\n", ret);
+	        TRACE("=> %s\n", WINMM_ErrorToString(ret));
 		if (map == WINMM_MAP_OKMEM)
 		    llType->UnMap16To32A(wMsg, &mld->dwDriverInstance, &dwParam1, &dwParam2, ret);
 		break;
@@ -268,7 +268,7 @@
 		ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16, 
                                          mld->uDeviceID, wMsg, mld->dwDriverInstance, 
                                          dwParam1, dwParam2);
-		TRACE("=> %lu\n", ret);
+	        TRACE("=> %s\n", WINMM_ErrorToString(ret));
 		if (map == WINMM_MAP_OKMEM)
 		    llType->UnMap32ATo16(wMsg, &mld->dwDriverInstance, &dwParam1, &dwParam2, ret);
 		break;
@@ -283,7 +283,7 @@
             ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16, 
                                      mld->uDeviceID, wMsg, mld->dwDriverInstance, 
                                      dwParam1, dwParam2);
-	    TRACE("=> %lu\n", ret);
+	    TRACE("=> %s\n", WINMM_ErrorToString(ret));
 	}
     }
     return ret;
@@ -540,7 +540,7 @@
 
     if (lpDrv->bIs32 && part->u.fnMessage32) {
 	ret = part->u.fnMessage32(0, DRVM_INIT, 0L, 0L, 0L);
-	TRACE("DRVM_INIT => %08lx\n", ret);
+	TRACE("DRVM_INIT => %s\n", WINMM_ErrorToString(ret));
 #if 0
 	ret = part->u.fnMessage32(0, DRVM_ENABLE, 0L, 0L, 0L);
 	TRACE("DRVM_ENABLE => %08lx\n", ret);
@@ -549,7 +549,7 @@
     } else if (!lpDrv->bIs32 && part->u.fnMessage16 && pFnCallMMDrvFunc16) {
         ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16,
                                  0, DRVM_INIT, 0L, 0L, 0L);
-	TRACE("DRVM_INIT => %08lx\n", ret);
+	TRACE("DRVM_INIT => %s\n", WINMM_ErrorToString(ret));
 #if 0
 	ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16,
                                  0, DRVM_ENABLE, 0L, 0L, 0L);
@@ -795,7 +795,7 @@
 	TRACE("DRVM_DISABLE => %08lx\n", ret);
 #endif
 	ret = part->u.fnMessage32(0, DRVM_EXIT, 0L, 0L, 0L);
-	TRACE("DRVM_EXIT => %08lx\n", ret);
+	TRACE("DRVM_EXIT => %s\n", WINMM_ErrorToString(ret));
     } else if (!lpDrv->bIs32 && part->u.fnMessage16 && pFnCallMMDrvFunc16) {
 #if 0
 	ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16,
@@ -804,7 +804,7 @@
 #endif
         ret = pFnCallMMDrvFunc16((DWORD)part->u.fnMessage16,
                                  0, DRVM_EXIT, 0L, 0L, 0L);
-	TRACE("DRVM_EXIT => %08lx\n", ret);
+	TRACE("DRVM_EXIT => %s\n", WINMM_ErrorToString(ret));
     } else {
 	return FALSE;
     }
Index: dlls/winmm/winemm.h
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winemm.h,v
retrieving revision 1.55
diff -u -r1.55 winemm.h
--- dlls/winmm/winemm.h	20 Jan 2004 01:45:05 -0000	1.55
+++ dlls/winmm/winemm.h	31 May 2004 01:56:29 -0000
@@ -256,6 +256,7 @@
 UINT		MCI_SetCommandTable(void *table, UINT uDevType);
 
 BOOL            WINMM_CheckForMMSystem(void);
+const char*     WINMM_ErrorToString(MMRESULT error);
 
 UINT            MIXER_Open(LPHMIXER lphMix, UINT uDeviceID, DWORD dwCallback,
                            DWORD dwInstance, DWORD fdwOpen, BOOL bFrom32);
Index: dlls/winmm/winmm.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winmm.c,v
retrieving revision 1.35
diff -u -r1.35 winmm.c
--- dlls/winmm/winmm.c	27 May 2004 20:12:51 -0000	1.35
+++ dlls/winmm/winmm.c	31 May 2004 01:56:31 -0000
@@ -28,6 +28,7 @@
  *      99/9	added support for loadable low level drivers
  */
 
+#include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
 
@@ -135,6 +136,36 @@
     return loaded > 0;
 }
 
+/******************************************************************
+ *             WINMM_ErrorToString
+ */
+const char* WINMM_ErrorToString(MMRESULT error)
+{
+#define ERR_TO_STR(dev) case dev: return #dev
+    static char unknown[32];
+    switch (error) {
+    ERR_TO_STR(MMSYSERR_NOERROR);
+    ERR_TO_STR(MMSYSERR_ERROR);
+    ERR_TO_STR(MMSYSERR_BADDEVICEID);
+    ERR_TO_STR(MMSYSERR_NOTENABLED);
+    ERR_TO_STR(MMSYSERR_ALLOCATED);
+    ERR_TO_STR(MMSYSERR_INVALHANDLE);
+    ERR_TO_STR(MMSYSERR_NODRIVER);
+    ERR_TO_STR(MMSYSERR_NOMEM);
+    ERR_TO_STR(MMSYSERR_NOTSUPPORTED);
+    ERR_TO_STR(MMSYSERR_BADERRNUM);
+    ERR_TO_STR(MMSYSERR_INVALFLAG);
+    ERR_TO_STR(MMSYSERR_INVALPARAM);
+    ERR_TO_STR(WAVERR_BADFORMAT);
+    ERR_TO_STR(WAVERR_STILLPLAYING);
+    ERR_TO_STR(WAVERR_UNPREPARED);
+    ERR_TO_STR(WAVERR_SYNC);
+    }
+    sprintf(unknown, "Unknown(0x%08x)", error);
+    return unknown;
+#undef ERR_TO_STR
+}
+
 /**************************************************************************
  *		DllMain (WINMM.init)
  *
@@ -2469,6 +2500,7 @@
         dwRet = MMDRV_Open(wmld, (uType == MMDRV_WAVEOUT) ? WODM_OPEN : WIDM_OPEN, 
                            (DWORD)&wod, dwFlags);
 
+        TRACE("dwRet = %s\n", WINMM_ErrorToString(dwRet));
         if (dwRet != WAVERR_BADFORMAT ||
             (dwFlags & (WAVE_MAPPED|WAVE_FORMAT_DIRECT)) != 0) break;
         /* if we ask for a format which isn't supported by the physical driver, 
@@ -2485,7 +2517,7 @@
     }
 
     if (lphndl != NULL) *lphndl = handle;
-    TRACE("=> %ld hWave=%p\n", dwRet, handle);
+    TRACE("=> %s hWave=%p\n", WINMM_ErrorToString(dwRet), handle);
 
     return dwRet;
 }
@@ -2867,12 +2899,15 @@
 	if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, TRUE)) != NULL) {
 	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
+        WARN("invalid handle\n");
 	return MMSYSERR_INVALHANDLE;
     }
 
     /* from M$ KB */
-    if (uMessage < DRVM_IOCTL || (uMessage >= DRVM_IOCTL_LAST && uMessage < DRVM_MAPPER))
+    if (uMessage < DRVM_IOCTL || (uMessage >= DRVM_IOCTL_LAST && uMessage < DRVM_MAPPER)) {
+        WARN("invalid parameter\n");
 	return MMSYSERR_INVALPARAM;
+    }
 
     return MMDRV_Message(wmld, uMessage, dwParam1, dwParam2, TRUE);
 }


More information about the wine-patches mailing list