Module: wine Branch: master Commit: 77e01019c5ceb7fd2389764328a10903a99fb1c5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=77e01019c5ceb7fd2389764328...
Author: Jörg Höhle hoehle@users.sourceforge.net Date: Tue Nov 15 10:18:39 2011 +0100
winealsa: Stop may not use snd_pcm_drop or lose written frames.
---
dlls/winealsa.drv/mmdevdrv.c | 11 +++-------- 1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c index e791feb..8e79c6e 100644 --- a/dlls/winealsa.drv/mmdevdrv.c +++ b/dlls/winealsa.drv/mmdevdrv.c @@ -1718,14 +1718,9 @@ static HRESULT WINAPI AudioClient_Stop(IAudioClient *iface) return S_FALSE; }
- if(snd_pcm_drop(This->pcm_handle) < 0) - WARN("snd_pcm_drop failed\n"); - - if(snd_pcm_reset(This->pcm_handle) < 0) - WARN("snd_pcm_reset failed\n"); - - if(snd_pcm_prepare(This->pcm_handle) < 0) - WARN("snd_pcm_prepare failed\n"); + /* Stop without losing written frames or position. + * snd_pcm_pause would be appropriate but is unsupported by dmix. + * snd_pcm_drain yields EAGAIN in NONBLOCK mode, except with Pulse. */
event = CreateEventW(NULL, TRUE, FALSE, NULL); wait = !DeleteTimerQueueTimer(g_timer_q, This->timer, event);