improved direct sound multiple device support

Jerry Ji JerryJz at hotmail.com
Sun Mar 23 05:29:53 CST 2003


The missing part for winearts, wineaudioio, winejack and winenas.

-------------- next part --------------
Index: dlls/winmm/winearts/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winearts/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- dlls/winmm/winearts/Makefile.in	17 May 2002 03:37:15 -0000	1.5
+++ dlls/winmm/winearts/Makefile.in	23 Mar 2003 11:10:30 -0000
@@ -5,7 +5,7 @@
 MODULE    = winearts.drv
 IMPORTS   = winmm user32 kernel32
 EXTRAINCL = @ARTSINCL@
-EXTRALIBS = @ARTSLIBS@
+EXTRALIBS = @ARTSLIBS@ $(LIBUUID)
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
Index: dlls/winmm/winearts/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winearts/audio.c,v
retrieving revision 1.10
diff -u -r1.10 audio.c
--- dlls/winmm/winearts/audio.c	23 Jan 2003 22:51:04 -0000	1.10
+++ dlls/winmm/winearts/audio.c	23 Mar 2003 11:10:34 -0000
@@ -154,6 +154,8 @@
 static WINE_WAVEOUT	WOutDev   [MAX_WAVEOUTDRV];
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 /* These strings used only for tracing */
 static const char *wodPlayerCmdString[] = {
@@ -1382,7 +1384,9 @@
     case WODM_RESTART:		return wodRestart	(wDevID);
     case WODM_RESET:		return wodReset		(wDevID);
 
-    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
+    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -1399,6 +1403,20 @@
     MESSAGE("This sound card's driver does not support direct access\n");
     MESSAGE("The (slower) DirectSound HEL mode will be used instead.\n");
     return MMSYSERR_NOTSUPPORTED;
+}
+
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc)
+{
+    memset(desc, 0, sizeof(*desc));
+    strcpy(desc->szDesc, "Wine aRts DirectSound Driver");
+    strcpy(desc->szDrvName, "winearts.drv");
+    return MMSYSERR_NOERROR;
+}
+
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
+{
+    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
+    return MMSYSERR_NOERROR;
 }
 
 #else /* !HAVE_ARTS */
Index: dlls/winmm/wineaudioio/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineaudioio/audio.c,v
retrieving revision 1.3
diff -u -r1.3 audio.c
--- dlls/winmm/wineaudioio/audio.c	17 Aug 2002 00:43:18 -0000	1.3
+++ dlls/winmm/wineaudioio/audio.c	23 Mar 2003 11:10:41 -0000
@@ -176,6 +176,11 @@
 static WINE_WAVEIN	WInDev    [MAX_WAVEINDRV ];
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
+static DWORD widDsCreate(UINT wDevID, PIDSCDRIVER* drv);
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
+static DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc);
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
+static DWORD widDsGuid(UINT wDevID, LPGUID pGuid);
 
 /*======================================================================*
  *                  Low level WAVE implementation			*
@@ -1242,7 +1247,9 @@
     case WODM_RESTART:		return wodRestart	(wDevID);
     case WODM_RESET:		return wodReset		(wDevID);
 
-    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
+    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -1503,8 +1510,8 @@
     TRACE("(%p,%p)\n",iface,pDesc);
     pDesc->dwFlags = DSDDESC_DOMMSYSTEMOPEN | DSDDESC_DOMMSYSTEMSETFORMAT |
 	DSDDESC_USESYSTEMMEMORY | DSDDESC_DONTNEEDPRIMARYLOCK;
-    strcpy(pDesc->szDesc,"WineOSS DirectSound Driver");
-    strcpy(pDesc->szDrvName,"wineoss.drv");
+    strcpy(pDesc->szDesc,"Wine AudioIO DirectSound Driver");
+    strcpy(pDesc->szDrvName,"wineaudioio.drv");
     pDesc->dnDevNode		= WOutDev[This->wDevID].waveDesc.dnDevNode;
     pDesc->wVxdId		= 0;
     pDesc->wReserved		= 0;
@@ -1676,6 +1683,20 @@
     return MMSYSERR_NOERROR;
 }
 
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc)
+{
+    memset(desc, 0, sizeof(*desc));
+    strcpy(desc->szDesc, "Wine LIBAUDIOIO DirectSound Driver");
+    strcpy(desc->szDrvName, "wineaudioio.drv");
+    return MMSYSERR_NOERROR;
+}
+
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
+{
+    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
+    return MMSYSERR_NOERROR;
+}
+
 /*======================================================================*
  *                  Low level WAVE IN implementation			*
  *======================================================================*/
@@ -2259,10 +2280,39 @@
     case WIDM_RESET:		return widReset      (wDevID);
     case WIDM_START:		return widStart      (wDevID);
     case WIDM_STOP:		return widStop       (wDevID);
+    case DRV_QUERYDSOUNDIFACE:	return widDsCreate   (wDevID, (PIDSCDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDDESC:	return widDsDesc     (wDevID, (PDSDRIVERDESC)dwParam1);
+    case DRV_QUERYDSOUNDGUID:	return widDsGuid     (wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %u!\n", wMsg);
     }
     return MMSYSERR_NOTSUPPORTED;
+}
+
+/*======================================================================*
+ *                  Low level DSOUND capture implementation		*
+ *======================================================================*/
+static DWORD widDsCreate(UINT wDevID, PIDSDRIVER* drv)
+{
+    /* we can't perform memory mapping as we don't have a file stream
+	interface with arts like we do with oss */
+    MESSAGE("This sound card's driver does not support direct access\n");
+    MESSAGE("The (slower) DirectSound HEL mode will be used instead.\n");
+    return MMSYSERR_NOTSUPPORTED;
+}
+
+static DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc)
+{
+    memset(desc, 0, sizeof(*desc));
+    strcpy(desc->szDesc, "Wine LIBAUDIOIO DirectSound Driver");
+    strcpy(desc->szDrvName, "wineaudioio.drv");
+    return MMSYSERR_NOERROR;
+}
+
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
+{
+    memcpy(pGuid, &DSDEVID_DefaultCapture, sizeof(GUID));
+    return MMSYSERR_NOERROR;
 }
 
 #else /* HAVE_LIBAUDIOIO */
Index: dlls/winmm/winejack/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winejack/audio.c,v
retrieving revision 1.3
diff -u -r1.3 audio.c
--- dlls/winmm/winejack/audio.c	23 Jan 2003 22:51:04 -0000	1.3
+++ dlls/winmm/winejack/audio.c	23 Mar 2003 11:10:46 -0000
@@ -177,9 +177,12 @@
 static WINE_WAVEIN  WInDev    [MAX_WAVEINDRV ];
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
+
 static LPWAVEHDR wodHelper_PlayPtrNext(WINE_WAVEOUT* wwo);
 static DWORD wodHelper_NotifyCompletions(WINE_WAVEOUT* wwo, BOOL force);
- 
+
 static int JACK_OpenDevice(WINE_WAVEOUT* wwo);
 
 #if JACK_CLOSE_HACK
@@ -1554,6 +1557,8 @@
   case WODM_RESET:            return wodReset(wDevID);
 
   case DRV_QUERYDSOUNDIFACE:	return wodDsCreate(wDevID, (PIDSDRIVER*)dwParam1);
+  case DRV_QUERYDSOUNDDESC:	return wodDsDesc(wDevID, (PDSDRIVERDESC)dwParam1);
+  case DRV_QUERYDSOUNDGUID:	return wodDsGuid(wDevID, (LPGUID)dwParam1);
   default:
     FIXME("unknown message %d!\n", wMsg);
     }
@@ -1594,6 +1599,20 @@
     MESSAGE("This sound card's driver does not support direct access\n");
     MESSAGE("The (slower) DirectSound HEL mode will be used instead.\n");
     return MMSYSERR_NOTSUPPORTED;
+}
+
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc)
+{
+    memset(desc, 0, sizeof(*desc));
+    strcpy(desc->szDesc, "Wine jack DirectSound Driver");
+    strcpy(desc->szDrvName, "winejack.drv");
+    return MMSYSERR_NOERROR;
+}
+
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
+{
+    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
+    return MMSYSERR_NOERROR;
 }
 
 /*======================================================================*
Index: dlls/winmm/winenas/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winenas/audio.c,v
retrieving revision 1.8
diff -u -r1.8 audio.c
--- dlls/winmm/winenas/audio.c	23 Jan 2003 22:51:04 -0000	1.8
+++ dlls/winmm/winenas/audio.c	23 Mar 2003 11:10:50 -0000
@@ -185,6 +185,8 @@
 static WINE_WAVEOUT	WOutDev   [MAX_WAVEOUTDRV];
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 
 /* NASFUNC */
@@ -1254,7 +1256,9 @@
     case WODM_RESTART:		return wodRestart	(wDevID);
     case WODM_RESET:		return wodReset		(wDevID);
 
-    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
+    case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
+    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -1271,6 +1275,20 @@
     MESSAGE("This sound card s driver does not support direct access\n");
     MESSAGE("The (slower) DirectSound HEL mode will be used instead.\n");
     return MMSYSERR_NOTSUPPORTED;
+}
+
+static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc)
+{
+    memset(desc, 0, sizeof(*desc));
+    strcpy(desc->szDesc, "Wine NAS DirectSound Driver");
+    strcpy(desc->szDrvName, "winenas.drv");
+    return MMSYSERR_NOERROR;
+}
+
+static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
+{
+    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
+    return MMSYSERR_NOERROR;
 }
 
 static int nas_init(void) {



More information about the wine-patches mailing list