[PATCH v2] dsound: Primary buffer doesn't support flag DSBCAPS_CTRLFX.

Andrew Eikum aeikum at codeweavers.com
Fri Sep 27 07:26:59 CDT 2019


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Fri, Sep 27, 2019 at 03:46:55AM +0000, Alistair Leslie-Hughes wrote:
> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40740
> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
> ---
> Fix failing tests.
> 
>  dlls/dmime/performance.c    |  1 +
>  dlls/dsound/dsound.c        |  6 +++++
>  dlls/dsound/tests/dsound8.c | 50 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 57 insertions(+)
> 
> diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
> index 6e4dae6be7..b7b4d01017 100644
> --- a/dlls/dmime/performance.c
> +++ b/dlls/dmime/performance.c
> @@ -1064,6 +1064,7 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath(IDire
>  
>  	/* Update description for creating primary buffer */
>  	desc.dwFlags |= DSBCAPS_PRIMARYBUFFER;
> +	desc.dwFlags &= ~DSBCAPS_CTRLFX;
>  	desc.dwBufferBytes = 0;
>  	desc.lpwfxFormat = NULL;
>  
> diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
> index f3030d6834..8e2b839fe8 100644
> --- a/dlls/dsound/dsound.c
> +++ b/dlls/dsound/dsound.c
> @@ -451,6 +451,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 6ed32abbcb..b66275973f 100644
> --- a/dlls/dsound/tests/dsound8.c
> +++ b/dlls/dsound/tests/dsound8.c
> @@ -1173,6 +1173,55 @@ static void test_COM(void)
>      while (IUnknown_Release(unk));
>  }
>  
> +static void test_primary_flags(void)
> +{
> +    HRESULT rc;
> +    IDirectSound8 *dso;
> +    IDirectSoundBuffer *primary = NULL;
> +    IDirectSoundFXI3DL2Reverb *reverb;
> +    DSBUFFERDESC bufdesc;
> +    DSCAPS dscaps;
> +
> +    /* 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;
> @@ -1711,6 +1760,7 @@ START_TEST(dsound8)
>              dsound8_tests();
>              test_hw_buffers();
>              test_first_device();
> +            test_primary_flags();
>              test_effects();
>              test_effects_parameters();
>          }
> -- 
> 2.23.0
> 
> 



More information about the wine-devel mailing list