Module: wine Branch: master Commit: 4c8ed8d104bcdb6cb71bc9a73d1d7dd6e9a2f6bc URL: http://source.winehq.org/git/wine.git/?a=commit;h=4c8ed8d104bcdb6cb71bc9a73d... Author: Andrew Eikum <aeikum(a)codeweavers.com> Date: Fri Sep 11 10:55:50 2015 -0500 xaudio2: Don't keep running after master voice is destroyed. --- dlls/xaudio2_7/xaudio_dll.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c index 739c919..ce7a15b 100644 --- a/dlls/xaudio2_7/xaudio_dll.c +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -1188,6 +1188,8 @@ static void WINAPI XA2M_DestroyVoice(IXAudio2MasteringVoice *iface) return; } + This->running = FALSE; + IAudioRenderClient_Release(This->render); This->render = NULL; @@ -3068,11 +3070,13 @@ static DWORD WINAPI engine_threadproc(void *arg) if(This->stop_engine) break; - if(!This->running) - continue; - EnterCriticalSection(&This->lock); + if(!This->running || !This->aclient){ + LeaveCriticalSection(&This->lock); + continue; + } + do_engine_tick(This); LeaveCriticalSection(&This->lock);