Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40740 Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com --- dlls/dsound/dsound.c | 6 +++++ dlls/dsound/tests/dsound8.c | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+)
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c index a74a9c69283..4dcea9e29e9 100644 --- a/dlls/dsound/dsound.c +++ b/dlls/dsound/dsound.c @@ -455,6 +455,12 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer( return DSERR_INVALIDPARAM; }
+ if (dsbd->dwFlags & DSBCAPS_CTRLFX) + { + WARN("Invalid parameter DSBCAPS_CTRLFX\n"); + return DSERR_INVALIDPARAM; + } + if (device->primary) { WARN("Primary Buffer already created\n"); IDirectSoundBuffer8_AddRef(&device->primary->IDirectSoundBuffer8_iface); diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c index 88ed4d9d4c6..fb49b8b7db4 100644 --- a/dlls/dsound/tests/dsound8.c +++ b/dlls/dsound/tests/dsound8.c @@ -1173,6 +1173,59 @@ static void test_COM(void) while (IUnknown_Release(unk)); }
+static void test_primary_flags(void) +{ + HRESULT rc; + IDirectSound8 *dso; + IDirectSoundBuffer *primary = NULL, *secondary; + IDirectSoundBuffer8 *secondary8; + IDirectSoundFXI3DL2Reverb *reverb; + DSBUFFERDESC bufdesc; + DSCAPS dscaps; + WAVEFORMATEX wfx; + DSEFFECTDESC effects[2]; + DWORD resultcodes[2]; + + /* Create a DirectSound8 object */ + rc = pDirectSoundCreate8(NULL, &dso, NULL); + ok(rc == DS_OK || rc==DSERR_NODRIVER, "Failed: %08x\n",rc); + + if (rc!=DS_OK) + return; + + rc = IDirectSound8_SetCooperativeLevel(dso, get_hwnd(), DSSCL_PRIORITY); + ok(rc == DS_OK,"Failed: %08x\n", rc); + if (rc != DS_OK) { + IDirectSound8_Release(dso); + return; + } + + dscaps.dwSize = sizeof(dscaps); + rc = IDirectSound8_GetCaps(dso, &dscaps); + ok(rc == DS_OK,"Failed: %08x\n", rc); + trace("0x%x\n", dscaps.dwFlags); + + ZeroMemory(&bufdesc, sizeof(bufdesc)); + bufdesc.dwSize = sizeof(bufdesc); + bufdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRLFX; + rc = IDirectSound8_CreateSoundBuffer(dso, &bufdesc, &primary, NULL); + ok(rc == E_INVALIDARG, "got %08x\n", rc); + + ZeroMemory(&bufdesc, sizeof(bufdesc)); + bufdesc.dwSize = sizeof(bufdesc); + bufdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRL3D; + rc = IDirectSound8_CreateSoundBuffer(dso, &bufdesc, &primary, NULL); + ok((rc == DS_OK && primary != NULL), "Failed to create a primary buffer: %08x\n", rc); + if (rc == DS_OK) { + rc = IDirectSoundBuffer_QueryInterface(primary, &IID_IDirectSoundFXI3DL2Reverb, (LPVOID*)&reverb); + ok(rc==E_NOINTERFACE,"Failed: %08x\n", rc); + + IDirectSoundBuffer_Release(primary); + } + + IDirectSound8_Release(dso); +} + static void test_effects(void) { HRESULT rc; @@ -1948,6 +2001,7 @@ START_TEST(dsound8) dsound8_tests(); test_hw_buffers(); test_first_device(); + test_primary_flags(); test_effects(); test_effects_parameters(); }
Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Sat, Sep 21, 2019 at 09:25:02AM +0000, Alistair Leslie-Hughes wrote:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40740 Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com
dlls/dsound/dsound.c | 6 +++++ dlls/dsound/tests/dsound8.c | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+)
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c index a74a9c69283..4dcea9e29e9 100644 --- a/dlls/dsound/dsound.c +++ b/dlls/dsound/dsound.c @@ -455,6 +455,12 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer( return DSERR_INVALIDPARAM; }
if (dsbd->dwFlags & DSBCAPS_CTRLFX)
{
WARN("Invalid parameter DSBCAPS_CTRLFX\n");
return DSERR_INVALIDPARAM;
}
if (device->primary) { WARN("Primary Buffer already created\n"); IDirectSoundBuffer8_AddRef(&device->primary->IDirectSoundBuffer8_iface);
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c index 88ed4d9d4c6..fb49b8b7db4 100644 --- a/dlls/dsound/tests/dsound8.c +++ b/dlls/dsound/tests/dsound8.c @@ -1173,6 +1173,59 @@ static void test_COM(void) while (IUnknown_Release(unk)); }
+static void test_primary_flags(void) +{
- HRESULT rc;
- IDirectSound8 *dso;
- IDirectSoundBuffer *primary = NULL, *secondary;
- IDirectSoundBuffer8 *secondary8;
- IDirectSoundFXI3DL2Reverb *reverb;
- DSBUFFERDESC bufdesc;
- DSCAPS dscaps;
- WAVEFORMATEX wfx;
- DSEFFECTDESC effects[2];
- DWORD resultcodes[2];
- /* Create a DirectSound8 object */
- rc = pDirectSoundCreate8(NULL, &dso, NULL);
- ok(rc == DS_OK || rc==DSERR_NODRIVER, "Failed: %08x\n",rc);
- if (rc!=DS_OK)
return;
- rc = IDirectSound8_SetCooperativeLevel(dso, get_hwnd(), DSSCL_PRIORITY);
- ok(rc == DS_OK,"Failed: %08x\n", rc);
- if (rc != DS_OK) {
IDirectSound8_Release(dso);
return;
- }
- dscaps.dwSize = sizeof(dscaps);
- rc = IDirectSound8_GetCaps(dso, &dscaps);
- ok(rc == DS_OK,"Failed: %08x\n", rc);
- trace("0x%x\n", dscaps.dwFlags);
- ZeroMemory(&bufdesc, sizeof(bufdesc));
- bufdesc.dwSize = sizeof(bufdesc);
- bufdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRLFX;
- rc = IDirectSound8_CreateSoundBuffer(dso, &bufdesc, &primary, NULL);
- ok(rc == E_INVALIDARG, "got %08x\n", rc);
- ZeroMemory(&bufdesc, sizeof(bufdesc));
- bufdesc.dwSize = sizeof(bufdesc);
- bufdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRL3D;
- rc = IDirectSound8_CreateSoundBuffer(dso, &bufdesc, &primary, NULL);
- ok((rc == DS_OK && primary != NULL), "Failed to create a primary buffer: %08x\n", rc);
- if (rc == DS_OK) {
rc = IDirectSoundBuffer_QueryInterface(primary, &IID_IDirectSoundFXI3DL2Reverb, (LPVOID*)&reverb);
ok(rc==E_NOINTERFACE,"Failed: %08x\n", rc);
IDirectSoundBuffer_Release(primary);
- }
- IDirectSound8_Release(dso);
+}
static void test_effects(void) { HRESULT rc; @@ -1948,6 +2001,7 @@ START_TEST(dsound8) dsound8_tests(); test_hw_buffers(); test_first_device();
test_primary_flags(); test_effects(); test_effects_parameters(); }
-- 2.23.0
Alistair Leslie-Hughes leslie_alistair@hotmail.com writes:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40740 Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com
dlls/dsound/dsound.c | 6 +++++ dlls/dsound/tests/dsound8.c | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+)
It breaks the tests:
../../../tools/runtest -q -P wine -T ../../.. -M dmime.dll -p dmime_test.exe dmime && touch dmime.ok dmime.c:68: Test failed: DirectMusicPerformance_InitAudio failed: 88780096 dmime.c:72: Tests skipped: Audio failed to initialize make: *** [Makefile:181: dmime.ok] Error 1