dsound test: Remove unneeded Caps/3D test

Robert Reif reif at earthlink.net
Sun Jul 18 19:44:56 CDT 2004


Francois Gouget wrote:

> This fixes another dsound Windows crash: we first create a buffer 
> without DSBCAPS_CTRL3D, then we query the IDirectSound3DBuffer on it 
> which obviously fails so that we try to do an AddRef on a NULL pointer 
> (buffer3d).
>
Fixes the right bugs and keeps intent of test.
Adds more reference count checks.

Tested on XP with DX9.
-------------- next part --------------
Index: dlls/dsound/tests/dsound.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/dsound.c,v
retrieving revision 1.27
diff -u -r1.27 dsound.c
--- dlls/dsound/tests/dsound.c	17 Jul 2004 00:04:17 -0000	1.27
+++ dlls/dsound/tests/dsound.c	19 Jul 2004 00:34:23 -0000
@@ -342,14 +342,21 @@
         init_format(&wfx,WAVE_FORMAT_PCM,11025,8,1);
         ZeroMemory(&bufdesc, sizeof(bufdesc));
         bufdesc.dwSize=sizeof(bufdesc);
-        bufdesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLVOLUME;
+        bufdesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRL3D;
         bufdesc.dwBufferBytes=wfx.nAvgBytesPerSec*BUFFER_LEN/1000;
         bufdesc.lpwfxFormat=&wfx;
         rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
         ok(rc==DS_OK && secondary!=NULL,"CreateSoundBuffer failed to create a secondary buffer 0x%lx\n", rc);
         if (rc==DS_OK && secondary!=NULL) {
-            /* add some more refs */
-            IDirectSoundBuffer_AddRef(secondary);
+            LPDIRECTSOUND3DBUFFER buffer3d;
+            rc=IDirectSound_QueryInterface(secondary, &IID_IDirectSound3DBuffer, (void **)&buffer3d);
+            ok(rc==DS_OK && buffer3d!=NULL,"QueryInterface failed:  %s\n",DXGetErrorString9(rc));
+            if (rc==DS_OK && buffer3d!=NULL) {
+                ref=IDirectSound3DBuffer_AddRef(buffer3d);
+                ok(ref==2,"IDirectSound3DBuffer_AddRef has %d references, should have 2\n",ref);
+            }
+            ref=IDirectSoundBuffer_AddRef(secondary);
+            ok(ref==2,"IDirectSoundBuffer_AddRef has %d references, should have 2\n",ref);
         }
         /* release with buffer */
         ref=IDirectSound_Release(dso);
@@ -460,14 +467,27 @@
         init_format(&wfx,WAVE_FORMAT_PCM,11025,8,1);
         ZeroMemory(&bufdesc, sizeof(bufdesc));
         bufdesc.dwSize=sizeof(bufdesc);
-        bufdesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLVOLUME;
+        bufdesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRL3D;
         bufdesc.dwBufferBytes=wfx.nAvgBytesPerSec*BUFFER_LEN/1000;
         bufdesc.lpwfxFormat=&wfx;
         rc=IDirectSound8_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);
         ok(rc==DS_OK && secondary!=NULL,"CreateSoundBuffer failed to create a secondary buffer 0x%lx\n", rc);
         if (rc==DS_OK && secondary!=NULL) {
-            /* add some more refs */
-            IDirectSoundBuffer8_AddRef(secondary);
+            LPDIRECTSOUND3DBUFFER buffer3d;
+            LPDIRECTSOUNDBUFFER8 buffer8;
+            rc=IDirectSound_QueryInterface(secondary, &IID_IDirectSound3DBuffer, (void **)&buffer3d);
+            ok(rc==DS_OK && buffer3d!=NULL,"QueryInterface failed:  %s\n",DXGetErrorString9(rc));
+            if (rc==DS_OK && buffer3d!=NULL) {
+                ref=IDirectSound3DBuffer_AddRef(buffer3d);
+                ok(ref==2,"IDirectSound3DBuffer_AddRef has %d references, should have 2\n",ref);
+            }
+            rc=IDirectSound_QueryInterface(secondary, &IID_IDirectSoundBuffer8, (void **)&buffer8);
+            if (rc==DS_OK && buffer8!=NULL) {
+                ref=IDirectSoundBuffer8_AddRef(buffer8);
+                ok(ref==3,"IDirectSoundBuffer8_AddRef has %d references, should have 3\n",ref);
+            }
+            ref=IDirectSoundBuffer_AddRef(secondary);
+            ok(ref==4,"IDirectSoundBuffer_AddRef has %d references, should have 4\n",ref);
         }
         /* release with buffer */
         ref=IDirectSound8_Release(dso);


More information about the wine-patches mailing list