[PATCH] xaudio2: Try to increase OpenAL source limit

Andrew Eikum aeikum at codeweavers.com
Mon Apr 17 13:14:58 CDT 2017


openal-soft recently added support for applications to request new
source count limits. Older versions will silently ignore these
attributes. Setting this avoids the need for the user to manually
increase the openal-soft source limit. See Bug 39591.

Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/xaudio2_7/xaudio_dll.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index b2a5e3b71e..a09162934e 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -1593,7 +1593,7 @@ static HRESULT WINAPI IXAudio2Impl_CreateMasteringVoice(IXAudio2 *iface,
     IMMDevice *dev;
     HRESULT hr;
     WAVEFORMATEX *fmt;
-    ALCint attrs[7];
+    ALCint attrs[11];
     REFERENCE_TIME period, bufdur;
 
     TRACE("(%p)->(%p, %u, %u, 0x%x, %s, %p, 0x%x)\n", This,
@@ -1743,11 +1743,20 @@ static HRESULT WINAPI IXAudio2Impl_CreateMasteringVoice(IXAudio2 *iface,
         LeaveCriticalSection(&This->lock);
         return AUDCLNT_E_UNSUPPORTED_FORMAT;
     }
+
     attrs[2] = ALC_FREQUENCY;
     attrs[3] = inputSampleRate;
+
     attrs[4] = ALC_FORMAT_TYPE_SOFT;
     attrs[5] = al_get_loopback_format(&This->fmt);
-    attrs[6] = 0;
+
+    /* some games create very many sources */
+    attrs[6] = ALC_STEREO_SOURCES;
+    attrs[7] = 1024;
+    attrs[8] = ALC_MONO_SOURCES;
+    attrs[9] = 1024;
+
+    attrs[10] = 0;
 
     if(!attrs[5]){
         WARN("OpenAL can't output samples in this format\n");
-- 
2.12.2




More information about the wine-patches mailing list