dsound: Correctly report hardware audio buffers as unsupported.

Signed-off-by: Eduard Permyakov <epermyakov@codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Eduard Permyakov 2021-11-17 15:48:52 +03:00 committed by Alexandre Julliard
parent 9d79f72142
commit 6806954251

View file

@ -373,12 +373,12 @@ static HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGU
device->drvcaps.dwPrimaryBuffers = 1; device->drvcaps.dwPrimaryBuffers = 1;
device->drvcaps.dwMinSecondarySampleRate = DSBFREQUENCY_MIN; device->drvcaps.dwMinSecondarySampleRate = DSBFREQUENCY_MIN;
device->drvcaps.dwMaxSecondarySampleRate = DSBFREQUENCY_MAX; device->drvcaps.dwMaxSecondarySampleRate = DSBFREQUENCY_MAX;
device->drvcaps.dwMaxHwMixingAllBuffers = 16; device->drvcaps.dwMaxHwMixingAllBuffers = 1;
device->drvcaps.dwMaxHwMixingStaticBuffers = device->drvcaps.dwMaxHwMixingAllBuffers; device->drvcaps.dwMaxHwMixingStaticBuffers = device->drvcaps.dwMaxHwMixingAllBuffers;
device->drvcaps.dwMaxHwMixingStreamingBuffers = device->drvcaps.dwMaxHwMixingAllBuffers; device->drvcaps.dwMaxHwMixingStreamingBuffers = device->drvcaps.dwMaxHwMixingAllBuffers;
device->drvcaps.dwFreeHwMixingAllBuffers = device->drvcaps.dwMaxHwMixingAllBuffers; device->drvcaps.dwFreeHwMixingAllBuffers = 0;
device->drvcaps.dwFreeHwMixingStaticBuffers = device->drvcaps.dwMaxHwMixingStaticBuffers; device->drvcaps.dwFreeHwMixingStaticBuffers = 0;
device->drvcaps.dwFreeHwMixingStreamingBuffers = device->drvcaps.dwMaxHwMixingStreamingBuffers; device->drvcaps.dwFreeHwMixingStreamingBuffers = 0;
ZeroMemory(&device->volpan, sizeof(device->volpan)); ZeroMemory(&device->volpan, sizeof(device->volpan));
@ -435,11 +435,10 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer(
} }
if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER) && if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER) &&
dsbd->dwFlags & DSBCAPS_LOCHARDWARE && dsbd->dwFlags & DSBCAPS_LOCHARDWARE)
device->drvcaps.dwFreeHwMixingAllBuffers == 0)
{ {
WARN("ran out of emulated hardware buffers\n"); WARN("unable to create hardware buffer\n");
return DSERR_ALLOCATED; return DSERR_UNSUPPORTED;
} }
if (dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER) { if (dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER) {