Module: wine Branch: refs/heads/master Commit: 54cf8ea1acd0e4182eaedb4862ab190dbfa85e6e URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=54cf8ea1acd0e4182eaedb48...
Author: Robert Reif reif@earthlink.net Date: Wed Jan 11 12:12:46 2006 +0100
dsound: Add primary buffer change tests. Add tests to figure out whether Windows can change the primary buffer capabilities after setting the buffer format. Based on a patch by Alex VillacĂs Lasso.
---
dlls/dsound/tests/ds3d.c | 25 +++++++++++++++++++++++++ dlls/dsound/tests/ds3d8.c | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/dlls/dsound/tests/ds3d.c b/dlls/dsound/tests/ds3d.c index be42f77..ea0a57c 100644 --- a/dlls/dsound/tests/ds3d.c +++ b/dlls/dsound/tests/ds3d.c @@ -362,6 +362,7 @@ void test_buffer(LPDIRECTSOUND dso, LPDI ok(status==0,"status=0x%lx instead of 0\n",status);
if (is_primary) { + DSBCAPS new_dsbcaps; /* We must call SetCooperativeLevel to be allowed to call SetFormat */ /* DSOUND: Setting DirectSound cooperative level to DSSCL_PRIORITY */ rc=IDirectSound_SetCooperativeLevel(dso,get_hwnd(),DSSCL_PRIORITY); @@ -400,6 +401,30 @@ void test_buffer(LPDIRECTSOUND dso, LPDI wfx.nChannels,wfx.nAvgBytesPerSec,wfx.nBlockAlign); }
+ ZeroMemory(&new_dsbcaps, sizeof(new_dsbcaps)); + new_dsbcaps.dwSize = sizeof(new_dsbcaps); + rc=IDirectSoundBuffer_GetCaps(*dsbo,&new_dsbcaps); + ok(rc==DS_OK,"IDirectSoundBuffer_GetCaps() failed: %s\n", + DXGetErrorString8(rc)); + if (rc==DS_OK && winetest_debug > 1) { + trace(" new Caps: flags=0x%08lx size=%ld\n",new_dsbcaps.dwFlags, + new_dsbcaps.dwBufferBytes); + } + + /* Check for primary buffer size change */ + if (new_dsbcaps.dwBufferBytes != dsbcaps.dwBufferBytes) { + trace(" buffer size changed after SetFormat() - " + "previous size was %lu, current size is %lu\n", + dsbcaps.dwBufferBytes, new_dsbcaps.dwBufferBytes); + } + + /* Check for primary buffer flags change */ + if (new_dsbcaps.dwFlags != dsbcaps.dwFlags) { + trace(" flags changed after SetFormat() - " + "previous flags were %08lx, current flags are %08lx\n", + dsbcaps.dwFlags, new_dsbcaps.dwFlags); + } + /* Set the CooperativeLevel back to normal */ /* DSOUND: Setting DirectSound cooperative level to DSSCL_NORMAL */ rc=IDirectSound_SetCooperativeLevel(dso,get_hwnd(),DSSCL_NORMAL); diff --git a/dlls/dsound/tests/ds3d8.c b/dlls/dsound/tests/ds3d8.c index 593f59a..b01e4d0 100644 --- a/dlls/dsound/tests/ds3d8.c +++ b/dlls/dsound/tests/ds3d8.c @@ -254,6 +254,7 @@ void test_buffer8(LPDIRECTSOUND8 dso, LP ok(status==0,"status=0x%lx instead of 0\n",status);
if (is_primary) { + DSBCAPS new_dsbcaps; /* We must call SetCooperativeLevel to be allowed to call SetFormat */ /* DSOUND: Setting DirectSound cooperative level to DSSCL_PRIORITY */ rc=IDirectSound8_SetCooperativeLevel(dso,get_hwnd(),DSSCL_PRIORITY); @@ -292,6 +293,30 @@ void test_buffer8(LPDIRECTSOUND8 dso, LP wfx.nChannels,wfx.nAvgBytesPerSec,wfx.nBlockAlign); }
+ ZeroMemory(&new_dsbcaps, sizeof(new_dsbcaps)); + new_dsbcaps.dwSize = sizeof(new_dsbcaps); + rc=IDirectSoundBuffer_GetCaps(*dsbo,&new_dsbcaps); + ok(rc==DS_OK,"IDirectSoundBuffer_GetCaps() failed: %s\n", + DXGetErrorString8(rc)); + if (rc==DS_OK && winetest_debug > 1) { + trace(" new Caps: flags=0x%08lx size=%ld\n",new_dsbcaps.dwFlags, + new_dsbcaps.dwBufferBytes); + } + + /* Check for primary buffer size change */ + if (new_dsbcaps.dwBufferBytes != dsbcaps.dwBufferBytes) { + trace(" buffer size changed after SetFormat() - " + "previous size was %lu, current size is %lu\n", + dsbcaps.dwBufferBytes, new_dsbcaps.dwBufferBytes); + } + + /* Check for primary buffer flags change */ + if (new_dsbcaps.dwFlags != dsbcaps.dwFlags) { + trace(" flags changed after SetFormat() - " + "previous flags were %08lx, current flags are %08lx\n", + dsbcaps.dwFlags, new_dsbcaps.dwFlags); + } + /* Set the CooperativeLevel back to normal */ /* DSOUND: Setting DirectSound cooperative level to DSSCL_NORMAL */ rc=IDirectSound8_SetCooperativeLevel(dso,get_hwnd(),DSSCL_NORMAL);