[PATCH] Revert "dsound: Only initialize one guid for capture and renderer."
Maarten Lankhorst
m.b.lankhorst at gmail.com
Fri Jan 1 09:14:30 CST 2010
This reverts commit b474649e0e9491f938f1daec74cdca01343dd97e.
---
dlls/dsound/capture.c | 11 ++++--
dlls/dsound/dsound.c | 10 +++--
dlls/dsound/dsound_main.c | 76 +++++++++++++++++++++---------------------
dlls/dsound/dsound_private.h | 5 ++-
dlls/dsound/propset.c | 14 +++----
5 files changed, 60 insertions(+), 56 deletions(-)
diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c
index f2a26bc..26c86b8 100644
--- a/dlls/dsound/capture.c
+++ b/dlls/dsound/capture.c
@@ -1059,10 +1059,13 @@ static HRESULT DirectSoundCaptureDevice_Initialize(
return DSERR_NODRIVER;
}
- wid = devGUID.Data4[7];
- if (!memcmp(&devGUID, &DSOUND_capture_guid, sizeof(GUID)-1)
- && wid < widn)
- found = TRUE;
+ /* enumerate WINMM audio devices and find the one we want */
+ for (wid=0; wid<widn; wid++) {
+ if (IsEqualGUID( &devGUID, &DSOUND_capture_guids[wid]) ) {
+ found = TRUE;
+ break;
+ }
+ }
if (found == FALSE) {
WARN("No device found matching given ID!\n");
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index 2a50329..83636c2 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -1373,10 +1373,12 @@ HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcG
return DSERR_NODRIVER;
}
- wod = devGUID.Data4[7];
- if (!memcmp(&devGUID, &DSOUND_renderer_guid, sizeof(GUID)-1)
- && wod < wodn)
- found = TRUE;
+ for (wod=0; wod<wodn; wod++) {
+ if (IsEqualGUID( &devGUID, &DSOUND_renderer_guids[wod])) {
+ found = TRUE;
+ break;
+ }
+ }
if (found == FALSE) {
WARN("No device found matching given ID!\n");
diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c
index b041386..d54ad65 100644
--- a/dlls/dsound/dsound_main.c
+++ b/dlls/dsound/dsound_main.c
@@ -61,8 +61,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(dsound);
DirectSoundDevice* DSOUND_renderer[MAXWAVEDRIVERS];
-GUID DSOUND_renderer_guid = { 0xbd6dd71a,0x3deb,0x11d1, {0xb1,0x71,0x00,0xc0,0x4f,0xc2,0x00,0x00} };
-GUID DSOUND_capture_guid = { 0xbd6dd71b,0x3deb,0x11d1, {0xb1,0x71,0x00,0xc0,0x4f,0xc2,0x00,0x00} };
+GUID DSOUND_renderer_guids[MAXWAVEDRIVERS];
+GUID DSOUND_capture_guids[MAXWAVEDRIVERS];
#ifdef HAVE_OPENAL
@@ -488,19 +488,17 @@ HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest)
}
if ( IsEqualGUID( &DSDEVID_DefaultPlayback, pGuidSrc ) ||
- IsEqualGUID( &DSDEVID_DefaultVoicePlayback, pGuidSrc ) ) {
- *pGuidDest = DSOUND_renderer_guid;
- pGuidDest->Data4[7] = ds_default_playback;
+ IsEqualGUID( &DSDEVID_DefaultVoicePlayback, pGuidSrc ) ) {
+ *pGuidDest = DSOUND_renderer_guids[ds_default_playback];
TRACE("returns %s\n", get_device_id(pGuidDest));
- return DS_OK;
+ return DS_OK;
}
if ( IsEqualGUID( &DSDEVID_DefaultCapture, pGuidSrc ) ||
- IsEqualGUID( &DSDEVID_DefaultVoiceCapture, pGuidSrc ) ) {
- *pGuidDest = DSOUND_capture_guid;
- pGuidDest->Data4[7] = ds_default_capture;
+ IsEqualGUID( &DSDEVID_DefaultVoiceCapture, pGuidSrc ) ) {
+ *pGuidDest = DSOUND_capture_guids[ds_default_capture];
TRACE("returns %s\n", get_device_id(pGuidDest));
- return DS_OK;
+ return DS_OK;
}
*pGuidDest = *pGuidSrc;
@@ -592,16 +590,17 @@ HRESULT WINAPI DirectSoundEnumerateW(
if (devs > 0) {
if (GetDeviceID(&DSDEVID_DefaultPlayback, &guid) == DS_OK) {
static const WCHAR empty[] = { 0 };
- wod = guid.Data4[7];
- if (wod < devs) {
- err = mmErr(waveOutMessage(UlongToHandle(wod),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
- if (err == DS_OK) {
- TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
- "Primary Sound Driver",desc.szDrvname,lpContext);
- MultiByteToWideChar( CP_ACP, 0, "Primary Sound Driver", -1,
- wDesc, sizeof(wDesc)/sizeof(WCHAR) );
- if (lpDSEnumCallback(NULL, wDesc, empty, lpContext) == FALSE)
- return DS_OK;
+ for (wod = 0; wod < devs; ++wod) {
+ if (IsEqualGUID( &guid, &DSOUND_renderer_guids[wod] ) ) {
+ err = mmErr(waveOutMessage(UlongToHandle(wod),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
+ if (err == DS_OK) {
+ TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+ "Primary Sound Driver",desc.szDrvname,lpContext);
+ MultiByteToWideChar( CP_ACP, 0, "Primary Sound Driver", -1,
+ wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+ if (lpDSEnumCallback(NULL, wDesc, empty, lpContext) == FALSE)
+ return DS_OK;
+ }
}
}
}
@@ -610,14 +609,13 @@ HRESULT WINAPI DirectSoundEnumerateW(
for (wod = 0; wod < devs; ++wod) {
err = mmErr(waveOutMessage(UlongToHandle(wod),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
if (err == DS_OK) {
- guid.Data4[7] = wod;
TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
- debugstr_guid(&guid),desc.szDesc,desc.szDrvname,lpContext);
+ debugstr_guid(&DSOUND_renderer_guids[wod]),desc.szDesc,desc.szDrvname,lpContext);
MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1,
wDesc, sizeof(wDesc)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, desc.szDrvname, -1,
wName, sizeof(wName)/sizeof(WCHAR) );
- if (lpDSEnumCallback(&guid, wDesc, wName, lpContext) == FALSE)
+ if (lpDSEnumCallback(&DSOUND_renderer_guids[wod], wDesc, wName, lpContext) == FALSE)
return DS_OK;
}
}
@@ -689,18 +687,19 @@ DirectSoundCaptureEnumerateW(
devs = waveInGetNumDevs();
if (devs > 0) {
if (GetDeviceID(&DSDEVID_DefaultCapture, &guid) == DS_OK) {
- wid = guid.Data4[7];
- if (wid < devs) {
- err = mmErr(waveInMessage(UlongToHandle(wid),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
- if (err == DS_OK) {
- TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
- "Primary Sound Capture Driver",desc.szDrvname,lpContext);
- MultiByteToWideChar( CP_ACP, 0, "Primary Sound Capture Driver", -1,
- wDesc, sizeof(wDesc)/sizeof(WCHAR) );
- MultiByteToWideChar( CP_ACP, 0, desc.szDrvname, -1,
- wName, sizeof(wName)/sizeof(WCHAR) );
- if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
- return DS_OK;
+ for (wid = 0; wid < devs; ++wid) {
+ if (IsEqualGUID( &guid, &DSOUND_capture_guids[wid] ) ) {
+ err = mmErr(waveInMessage(UlongToHandle(wid),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
+ if (err == DS_OK) {
+ TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+ "Primary Sound Capture Driver",desc.szDrvname,lpContext);
+ MultiByteToWideChar( CP_ACP, 0, "Primary Sound Capture Driver", -1,
+ wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, desc.szDrvname, -1,
+ wName, sizeof(wName)/sizeof(WCHAR) );
+ if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
+ return DS_OK;
+ }
}
}
}
@@ -709,14 +708,13 @@ DirectSoundCaptureEnumerateW(
for (wid = 0; wid < devs; ++wid) {
err = mmErr(waveInMessage(UlongToHandle(wid),DRV_QUERYDSOUNDDESC,(DWORD_PTR)&desc,0));
if (err == DS_OK) {
- guid.Data4[7] = wid;
TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
- debugstr_guid(&guid),desc.szDesc,desc.szDrvname,lpContext);
+ debugstr_guid(&DSOUND_capture_guids[wid]),desc.szDesc,desc.szDrvname,lpContext);
MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1,
wDesc, sizeof(wDesc)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, desc.szDrvname, -1,
wName, sizeof(wName)/sizeof(WCHAR) );
- if (lpDSEnumCallback(&guid, wDesc, wName, lpContext) == FALSE)
+ if (lpDSEnumCallback(&DSOUND_capture_guids[wid], wDesc, wName, lpContext) == FALSE)
return DS_OK;
}
}
@@ -897,6 +895,8 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
for (i = 0; i < MAXWAVEDRIVERS; i++) {
DSOUND_renderer[i] = NULL;
DSOUND_capture[i] = NULL;
+ INIT_GUID(DSOUND_renderer_guids[i], 0xbd6dd71a, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
+ INIT_GUID(DSOUND_capture_guids[i], 0xbd6dd71b, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
}
DisableThreadLibraryCalls(hInstDLL);
/* Increase refcount on dsound by 1 */
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index daa509d..cfb20cd 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -629,9 +629,10 @@ HRESULT DSOUND_CaptureCreate8(REFIID riid, LPDIRECTSOUNDCAPTURE8 *ppDSC8);
#define DSOUND_FREQSHIFT (20)
extern DirectSoundDevice* DSOUND_renderer[MAXWAVEDRIVERS];
+extern GUID DSOUND_renderer_guids[MAXWAVEDRIVERS];
+
extern DirectSoundCaptureDevice * DSOUND_capture[MAXWAVEDRIVERS];
-extern GUID DSOUND_capture_guid;
-extern GUID DSOUND_renderer_guid;
+extern GUID DSOUND_capture_guids[MAXWAVEDRIVERS];
HRESULT mmErr(UINT err);
void setup_dsound_options(void);
diff --git a/dlls/dsound/propset.c b/dlls/dsound/propset.c
index 19a88fb..0645610 100644
--- a/dlls/dsound/propset.c
+++ b/dlls/dsound/propset.c
@@ -116,8 +116,7 @@ static HRESULT DSPROPERTY_WaveDeviceMappingW(
res = waveOutGetDevCapsW(wod, &capsW, sizeof(capsW));
if (res == MMSYSERR_NOERROR) {
if (lstrcmpW(capsW.szPname, ppd->DeviceName) == 0) {
- ppd->DeviceId = DSOUND_renderer_guid;
- ppd->DeviceId.Data4[7] = wod;
+ ppd->DeviceId = DSOUND_renderer_guids[wod];
hr = DS_OK;
TRACE("found %s for %s\n", debugstr_guid(&ppd->DeviceId),
debugstr_w(ppd->DeviceName));
@@ -136,8 +135,7 @@ static HRESULT DSPROPERTY_WaveDeviceMappingW(
res = waveInGetDevCapsW(wid, &capsW, sizeof(capsW));
if (res == MMSYSERR_NOERROR) {
if (lstrcmpW(capsW.szPname, ppd->DeviceName) == 0) {
- ppd->DeviceId = DSOUND_capture_guid;
- ppd->DeviceId.Data4[7] = wid;
+ ppd->DeviceId = DSOUND_capture_guids[wid];
hr = DS_OK;
TRACE("found %s for %s\n", debugstr_guid(&ppd->DeviceId),
debugstr_w(ppd->DeviceName));
@@ -222,13 +220,13 @@ static HRESULT DSPROPERTY_DescriptionW(
wodn = waveOutGetNumDevs();
widn = waveInGetNumDevs();
wid = wod = dev_guid.Data4[7];
- if (!memcmp(&dev_guid, &DSOUND_renderer_guid, sizeof(GUID)-1)
+ if (!memcmp(&dev_guid, &DSOUND_renderer_guids[0], sizeof(GUID)-1)
&& wod < wodn)
{
ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
ppd->WaveDeviceId = wod;
}
- else if (!memcmp(&dev_guid, &DSOUND_capture_guid, sizeof(GUID)-1)
+ else if (!memcmp(&dev_guid, &DSOUND_capture_guids[0], sizeof(GUID)-1)
&& wid < widn)
{
ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
@@ -308,7 +306,7 @@ static HRESULT DSPROPERTY_EnumerateW(
wodn = waveOutGetNumDevs();
widn = waveInGetNumDevs();
- data.DeviceId = DSOUND_renderer_guid;
+ data.DeviceId = DSOUND_renderer_guids[0];
for (i = 0; i < wodn; ++i)
{
HRESULT hr;
@@ -326,7 +324,7 @@ static HRESULT DSPROPERTY_EnumerateW(
return S_OK;
}
- data.DeviceId = DSOUND_capture_guid;
+ data.DeviceId = DSOUND_capture_guids[0];
for (i = 0; i < widn; ++i)
{
HRESULT hr;
--
1.6.5.4
More information about the wine-patches
mailing list