Splitting out shared Win16/Win32 code

Eric Pouech pouech-eric at wanadoo.fr
Sun Nov 30 13:57:27 CST 2003


> You're right. I should have written MMDRV_PhysicalFeatures.
> See attached patch.
ooops, I forgot to submit the fix I had for that back to wine...
This should be a better fix, whithout code duplication

A+
-- 
Eric Pouech
-------------- next part --------------
Name:          mm16
ChangeLog:     - move usage of 16 bit specific functions (MapSL) in 16 bit code only
License:       X11
GenDate:       2003/11/30 19:56:12 UTC
ModifiedFiles: dlls/winmm/lolvldrv.c dlls/winmm/mmsystem.c dlls/winmm/winemm.h dlls/winmm/winmm.c
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/lolvldrv.c,v
retrieving revision 1.53
diff -u -u -r1.53 lolvldrv.c
--- dlls/winmm/lolvldrv.c	9 Nov 2003 01:19:58 -0000	1.53
+++ dlls/winmm/lolvldrv.c	9 Nov 2003 10:15:24 -0000
@@ -461,25 +461,19 @@
  * 				MMDRV_PhysicalFeatures		[internal]
  */
 UINT	MMDRV_PhysicalFeatures(LPWINE_MLD mld, UINT uMsg, DWORD dwParam1,
-			       DWORD dwParam2, BOOL bFrom32)
+			       DWORD dwParam2)
 {
     WINE_MM_DRIVER*	lpDrv = &MMDrvs[mld->mmdIndex];
 
-    TRACE("(%p, %04x, %08lx, %08lx, %d)\n", mld, uMsg, dwParam1, dwParam2, bFrom32);
+    TRACE("(%p, %04x, %08lx, %08lx)\n", mld, uMsg, dwParam1, dwParam2);
 
     /* all those function calls are undocumented */
     switch (uMsg) {
     case DRV_QUERYDRVENTRY:
-	if (bFrom32)
-	    lstrcpynA((LPSTR)dwParam1, lpDrv->drvname, LOWORD(dwParam2));
-	else
-	    lstrcpynA((LPSTR)MapSL(dwParam1), lpDrv->drvname, LOWORD(dwParam2));
+        lstrcpynA((LPSTR)dwParam1, lpDrv->drvname, LOWORD(dwParam2));
 	break;
     case DRV_QUERYDEVNODE:
-	if (bFrom32)
-	    *(LPDWORD)dwParam1 = 0L; /* should be DevNode */
-	else
-	    *(DWORD*)MapSL(dwParam1) = 0L;
+        *(LPDWORD)dwParam1 = 0L; /* should be DevNode */
 	break;
     case DRV_QUERYNAME:
 	WARN("NIY QueryName\n");
@@ -496,18 +490,12 @@
 
     case DRVM_MAPPER_PREFERRED_GET:
 	/* FIXME: get from registry someday */
-	if (bFrom32) {
-	    *((LPDWORD)dwParam1) = -1;      /* No preferred device */
-	    break;
-	}
-	return MMSYSERR_INVALPARAM;
+        *((LPDWORD)dwParam1) = -1;      /* No preferred device */
+        break;
 
     case DRV_QUERYDEVICEINTERFACE:
     case DRV_QUERYDEVICEINTERFACESIZE:
-	if (bFrom32)
-	    return MMDRV_Message(mld, uMsg, dwParam1, dwParam2, TRUE);
-	
-	return MMSYSERR_INVALPARAM;
+        return MMDRV_Message(mld, uMsg, dwParam1, dwParam2, TRUE);
 
     case DRV_QUERYDSOUNDIFACE: /* Wine-specific: Retrieve DirectSound interface */
     case DRV_QUERYDSOUNDDESC: /* Wine-specific: Retrieve DirectSound driver description*/
Index: dlls/winmm/mmsystem.c
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/mmsystem.c,v
retrieving revision 1.101
diff -u -u -r1.101 mmsystem.c
--- dlls/winmm/mmsystem.c	9 Nov 2003 01:19:58 -0000	1.101
+++ dlls/winmm/mmsystem.c	9 Nov 2003 10:15:26 -0000
@@ -1485,7 +1485,9 @@
 
     if ((wmld = MMDRV_Get(HWAVEOUT_32(hWaveOut), MMDRV_WAVEOUT, FALSE)) == NULL) {
 	if ((wmld = MMDRV_Get(HWAVEOUT_32(hWaveOut), MMDRV_WAVEOUT, TRUE)) != NULL) {
-	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2, FALSE);
+            if (uMessage == DRV_QUERYDRVENTRY || uMessage == DRV_QUERYDEVNODE)
+                dwParam1 = (DWORD)MapSL(dwParam1);
+	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
 	return MMSYSERR_INVALHANDLE;
     }
@@ -1726,7 +1728,9 @@
 
     if ((wmld = MMDRV_Get(HWAVEIN_32(hWaveIn), MMDRV_WAVEIN, FALSE)) == NULL) {
 	if ((wmld = MMDRV_Get(HWAVEIN_32(hWaveIn), MMDRV_WAVEIN, TRUE)) != NULL) {
-	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2, FALSE);
+            if (uMessage == DRV_QUERYDRVENTRY || uMessage == DRV_QUERYDEVNODE)
+                dwParam1 = (DWORD)MapSL(dwParam1);
+	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
 	return MMSYSERR_INVALHANDLE;
     }
Index: dlls/winmm/winemm.h
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/winemm.h,v
retrieving revision 1.48
diff -u -u -r1.48 winemm.h
--- dlls/winmm/winemm.h	9 Nov 2003 01:19:58 -0000	1.48
+++ dlls/winmm/winemm.h	9 Nov 2003 10:15:27 -0000
@@ -243,7 +243,7 @@
 LPWINE_MLD	MMDRV_Get(HANDLE hndl, UINT type, BOOL bCanBeID);
 LPWINE_MLD	MMDRV_GetRelated(HANDLE hndl, UINT srcType, BOOL bSrcCanBeID, UINT dstTyped);
 DWORD		MMDRV_Message(LPWINE_MLD mld, WORD wMsg, DWORD dwParam1, DWORD dwParam2, BOOL bFrom32);
-UINT		MMDRV_PhysicalFeatures(LPWINE_MLD mld, UINT uMsg, DWORD dwParam1, DWORD dwParam2, BOOL bFrom32);
+UINT		MMDRV_PhysicalFeatures(LPWINE_MLD mld, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
 BOOL            MMDRV_Is32(unsigned int);
 void            MMDRV_InstallMap(unsigned int, MMDRV_MAPFUNC, MMDRV_UNMAPFUNC,
                                  MMDRV_MAPFUNC, MMDRV_UNMAPFUNC, LPDRVCALLBACK);
Index: dlls/winmm/winmm.c
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/winmm.c,v
retrieving revision 1.25
diff -u -u -r1.25 winmm.c
--- dlls/winmm/winmm.c	26 Nov 2003 03:39:13 -0000	1.25
+++ dlls/winmm/winmm.c	27 Nov 2003 19:32:22 -0000
@@ -1306,7 +1306,7 @@
 	    return 0;
 	}
 	if ((wmld = MMDRV_Get(hMidiOut, MMDRV_MIDIOUT, TRUE)) != NULL) {
-	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2, TRUE);
+	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
 	return MMSYSERR_INVALHANDLE;
     }
@@ -2619,7 +2619,7 @@
 
     if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, FALSE)) == NULL) {
 	if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, TRUE)) != NULL) {
-	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2, TRUE);
+	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
 	return MMSYSERR_INVALHANDLE;
     }
@@ -2877,7 +2877,7 @@
 
     if ((wmld = MMDRV_Get(hWaveIn, MMDRV_WAVEIN, FALSE)) == NULL) {
 	if ((wmld = MMDRV_Get(hWaveIn, MMDRV_WAVEIN, TRUE)) != NULL) {
-	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2, TRUE);
+	    return MMDRV_PhysicalFeatures(wmld, uMessage, dwParam1, dwParam2);
 	}
 	return MMSYSERR_INVALHANDLE;
     }


More information about the wine-devel mailing list