dsound/tests: Primary and secondary buffers use the same IDirectSoundBuffer vtbl.

Michael Stefaniuc mstefani at redhat.de
Sun Aug 28 17:28:50 CDT 2011


There are broken programs that rely on this behavior. E.g. Caesar3 does:
  primary->lpVtbl.GetStatus(secondary, &status)
And the refcount fix from 6d7c38256f25 changed the layout of the
secondary buffer object which produced a regression:
http://bugs.winehq.org/show_bug.cgi?id=28207
---
 dlls/dsound/tests/dsound.c  |    3 +++
 dlls/dsound/tests/dsound8.c |    3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/dlls/dsound/tests/dsound.c b/dlls/dsound/tests/dsound.c
index 64b188c..be846df 100644
--- a/dlls/dsound/tests/dsound.c
+++ b/dlls/dsound/tests/dsound.c
@@ -627,6 +627,9 @@ static HRESULT test_primary_secondary(LPGUID lpGuid)
                "IDirectSound_CreateSoundBuffer() failed to create a secondary buffer %08x\n",rc);
 
             if (rc==DS_OK && secondary!=NULL) {
+                todo_wine ok(primary->lpVtbl==secondary->lpVtbl,
+                            "Primary and secondary buffers have different vtbls.\n");
+
                 test_buffer(dso,&secondary,0,FALSE,0,FALSE,0,
                             winetest_interactive,1.0,0,NULL,0,0,FALSE,0);
 
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index 6406b47..87d9adb 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -639,6 +639,9 @@ static HRESULT test_primary_secondary8(LPGUID lpGuid)
                "buffer %08x\n",rc);
 
             if (rc==DS_OK && secondary!=NULL) {
+                todo_wine ok(primary->lpVtbl==secondary->lpVtbl,
+                            "Primary and secondary buffers have different vtbls.\n");
+
                 test_buffer8(dso,&secondary,0,FALSE,0,FALSE,0,
                              winetest_interactive,1.0,0,NULL,0,0);
 
-- 
1.7.6.1



More information about the wine-patches mailing list