From 20fff3d1113d1c1975c861f02dc7c1f3a012b81c Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Fri, 13 Feb 2004 21:10:21 +0000 Subject: [PATCH] Enable hardware secondary buffer support on cards that support it (SB live and audigy). --- dlls/winmm/wineoss/audio.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dlls/winmm/wineoss/audio.c b/dlls/winmm/wineoss/audio.c index 2d77d61bca2..a63dd8a7e77 100644 --- a/dlls/winmm/wineoss/audio.c +++ b/dlls/winmm/wineoss/audio.c @@ -673,6 +673,29 @@ static BOOL OSS_WaveOutInit(OSS_DEVICE* ossdev) } else { ossdev->ds_caps.dwFlags |= DSCAPS_EMULDRIVER; } +#ifdef DSP_CAP_MULTI /* not every oss has this */ + /* check for hardware secondary buffer support (multi open) */ + if ((arg & DSP_CAP_MULTI) && + (ossdev->out_caps.dwSupport & WAVECAPS_DIRECTSOUND)) { + TRACE("hardware secondary buffer support available\n"); + if (ossdev->ds_caps.dwFlags & DSCAPS_PRIMARY8BIT) + ossdev->ds_caps.dwFlags |= DSCAPS_SECONDARY8BIT; + if (ossdev->ds_caps.dwFlags & DSCAPS_PRIMARY16BIT) + ossdev->ds_caps.dwFlags |= DSCAPS_SECONDARY16BIT; + if (ossdev->ds_caps.dwFlags & DSCAPS_PRIMARYMONO) + ossdev->ds_caps.dwFlags |= DSCAPS_SECONDARYMONO; + if (ossdev->ds_caps.dwFlags & DSCAPS_PRIMARYSTEREO) + ossdev->ds_caps.dwFlags |= DSCAPS_SECONDARYSTEREO; + + ossdev->ds_caps.dwMaxHwMixingAllBuffers = 16; + ossdev->ds_caps.dwMaxHwMixingStaticBuffers = 0; + ossdev->ds_caps.dwMaxHwMixingStreamingBuffers = 16; + + ossdev->ds_caps.dwFreeHwMixingAllBuffers = 16; + ossdev->ds_caps.dwFreeHwMixingStaticBuffers = 0; + ossdev->ds_caps.dwFreeHwMixingStreamingBuffers = 16; + } +#endif } OSS_CloseDevice(ossdev); TRACE("out dwFormats = %08lX, dwSupport = %08lX\n",