[PATCH] xaudio2: Handle openal source allocation failure
Andrew Eikum
aeikum at codeweavers.com
Tue Feb 9 10:39:23 CST 2016
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
dlls/xaudio2_7/xaudio_dll.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index 32bc1c8..9ae9f1e 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -32,6 +32,7 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
static ALCdevice *(ALC_APIENTRY *palcLoopbackOpenDeviceSOFT)(const ALCchar*);
static void (ALC_APIENTRY *palcRenderSamplesSOFT)(ALCdevice*, ALCvoid*, ALCsizei);
@@ -1415,11 +1416,21 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
hr = XA2SRC_SetOutputVoices(&src->IXAudio2SourceVoice_iface, pSendList);
if(FAILED(hr)){
+ HeapFree(GetProcessHeap(), 0, src->fmt);
src->in_use = FALSE;
return hr;
}
alGenSources(1, &src->al_src);
+ if(!src->al_src){
+ static int once = 0;
+ if(!once++)
+ ERR_(winediag)("OpenAL ran out of sources! Consider increasing its source limit.\n");
+ HeapFree(GetProcessHeap(), 0, src->fmt);
+ src->in_use = FALSE;
+ return E_OUTOFMEMORY;
+ }
+
alGenBuffers(XAUDIO2_MAX_QUEUED_BUFFERS, src->al_bufs);
alSourcePlay(src->al_src);
--
2.7.1
More information about the wine-patches
mailing list