Jeff Zaroyko : dsound: Fix a few failing tests and a crash on 2008 (revised ).

Alexandre Julliard julliard at winehq.org
Wed Sep 10 06:01:46 CDT 2008


Module: wine
Branch: master
Commit: 49d309804d3a0beebb178793a04f99f771d2bf53
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=49d309804d3a0beebb178793a04f99f771d2bf53

Author: Jeff Zaroyko <jeffz at jeffz.name>
Date:   Wed Sep 10 04:44:46 2008 +1000

dsound: Fix a few failing tests and a crash on 2008 (revised).

---

 dlls/dsound/tests/dsound.c  |   25 +++++++++++++++++++++----
 dlls/dsound/tests/dsound8.c |   27 +++++++++++++++++++++++----
 2 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/dlls/dsound/tests/dsound.c b/dlls/dsound/tests/dsound.c
index d6c0f29..9dc8f21 100644
--- a/dlls/dsound/tests/dsound.c
+++ b/dlls/dsound/tests/dsound.c
@@ -716,8 +716,9 @@ static HRESULT test_secondary(LPGUID lpGuid)
             if (gotdx8 || wfx.wBitsPerSample <= 16)
             {
                 if (wfx.wBitsPerSample > 16)
-                    ok((rc == DSERR_CONTROLUNAVAIL || rc == DSERR_INVALIDCALL) &&
-                        !secondary, "IDirectSound_CreateSoundBuffer() "
+                    ok(((rc == DSERR_CONTROLUNAVAIL || rc == DSERR_INVALIDCALL || rc == DSERR_INVALIDPARAM /* 2003 */) && !secondary)
+                        || rc == DS_OK, /* driver dependent? */
+                        "IDirectSound_CreateSoundBuffer() "
                         "should have returned (DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL) "
                         "and NULL, returned: %08x %p\n", rc, secondary);
                 else
@@ -750,20 +751,27 @@ static HRESULT test_secondary(LPGUID lpGuid)
             wfxe.dwChannelMask = (wfx.nChannels == 1 ? KSAUDIO_SPEAKER_MONO : KSAUDIO_SPEAKER_STEREO);
 
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
-            ok(rc==DSERR_INVALIDPARAM && !secondary,
+            ok((rc==DSERR_INVALIDPARAM || rc==DSERR_INVALIDCALL /* 2003 */) && !secondary,
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
 
             wfxe.Format.cbSize = sizeof(wfxe) - sizeof(wfx) + 1;
 
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
-            ok(rc==DSERR_CONTROLUNAVAIL && !secondary,
+            ok(((rc==DSERR_CONTROLUNAVAIL || rc==DSERR_INVALIDCALL) && !secondary)
+                || rc==DS_OK, /* 2003 / 2008 */
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
 
             wfxe.Format.cbSize = sizeof(wfxe) - sizeof(wfx);
             wfxe.SubFormat = GUID_NULL;
@@ -772,7 +780,10 @@ static HRESULT test_secondary(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             wfxe.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
 
             ++wfxe.Samples.wValidBitsPerSample;
@@ -781,7 +792,10 @@ static HRESULT test_secondary(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             --wfxe.Samples.wValidBitsPerSample;
 
             wfxe.Samples.wValidBitsPerSample = 0;
@@ -790,7 +804,10 @@ static HRESULT test_secondary(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             wfxe.Samples.wValidBitsPerSample = wfxe.Format.wBitsPerSample;
 
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index 8edb9b4..2e02a92 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -574,7 +574,9 @@ static HRESULT test_primary_secondary8(LPGUID lpGuid)
                         formats[f][2]);
             wfx2=wfx;
             rc=IDirectSoundBuffer_SetFormat(primary,&wfx);
-            ok(rc==DS_OK,"IDirectSoundBuffer_SetFormat(%s) failed: %08x\n",
+            ok(rc==DS_OK
+               || rc==DSERR_INVALIDPARAM, /* 2003 */
+               "IDirectSoundBuffer_SetFormat(%s) failed: %08x\n",
                format_string(&wfx), rc);
 
             /* There is no guarantee that SetFormat will actually change the
@@ -723,8 +725,9 @@ static HRESULT test_secondary8(LPGUID lpGuid)
             bufdesc.lpwfxFormat=&wfx;
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
             if (wfx.wBitsPerSample != 8 && wfx.wBitsPerSample != 16)
-                ok((rc == DSERR_CONTROLUNAVAIL || rc == DSERR_INVALIDCALL) &&
-                    !secondary, "IDirectSound_CreateSoundBuffer() "
+                ok(((rc == DSERR_CONTROLUNAVAIL || rc == DSERR_INVALIDCALL || rc == DSERR_INVALIDPARAM /* 2003 */) && !secondary)
+                    || rc == DS_OK, /* driver dependent? */
+                    "IDirectSound_CreateSoundBuffer() "
                     "should have returned (DSERR_CONTROLUNAVAIL or DSERR_INVALIDCALL) "
                     "and NULL, returned: %08x %p\n", rc, secondary);
             else
@@ -748,16 +751,23 @@ static HRESULT test_secondary8(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
 
             wfxe.Format.cbSize = sizeof(wfxe) - sizeof(wfx) + 1;
 
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
-            ok(rc==DSERR_CONTROLUNAVAIL && !secondary,
+            ok(((rc==DSERR_CONTROLUNAVAIL || DSERR_INVALIDCALL /* 2003 */) && !secondary)
+                || rc==DS_OK /* driver dependent? */,
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
 
             wfxe.Format.cbSize = sizeof(wfxe) - sizeof(wfx);
             wfxe.SubFormat = GUID_NULL;
@@ -766,7 +776,10 @@ static HRESULT test_secondary8(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             wfxe.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
 
             ++wfxe.Samples.wValidBitsPerSample;
@@ -775,7 +788,10 @@ static HRESULT test_secondary8(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             --wfxe.Samples.wValidBitsPerSample;
 
             wfxe.Samples.wValidBitsPerSample = 0;
@@ -784,7 +800,10 @@ static HRESULT test_secondary8(LPGUID lpGuid)
                 "IDirectSound_CreateSoundBuffer() returned: %08x %p\n",
                 rc, secondary);
             if (secondary)
+            {
                 IDirectSoundBuffer_Release(secondary);
+                secondary=NULL;
+            }
             wfxe.Samples.wValidBitsPerSample = wfxe.Format.wBitsPerSample;
 
             rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);




More information about the wine-cvs mailing list