=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: wineoss: EAGAIN (OSS buffer full) is a regular situation.
Alexandre Julliard
julliard at winehq.org
Thu Sep 22 13:39:49 CDT 2011
Module: wine
Branch: master
Commit: 55efce6c9ca7fd13f4e4362f7fc8fd456d803ea2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=55efce6c9ca7fd13f4e4362f7fc8fd456d803ea2
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Wed Sep 21 10:42:16 2011 +0200
wineoss: EAGAIN (OSS buffer full) is a regular situation.
---
dlls/wineoss.drv/mmdevdrv.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index 562a674..33438e4 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -1224,6 +1224,7 @@ static void oss_write_data(ACImpl *This)
written = write(This->fd, buf, to_write * This->fmt->nBlockAlign);
if(written < 0){
+ /* EAGAIN is OSS buffer full, log that too */
WARN("write failed: %d (%s)\n", errno, strerror(errno));
return;
}
@@ -1729,9 +1730,12 @@ static HRESULT WINAPI AudioRenderClient_ReleaseBuffer(
w_bytes = write(This->fd, buffer,
written_frames * This->fmt->nBlockAlign);
if(w_bytes < 0){
- LeaveCriticalSection(&This->lock);
- WARN("write failed: %d (%s)\n", errno, strerror(errno));
- return E_FAIL;
+ if(errno != EAGAIN){
+ LeaveCriticalSection(&This->lock);
+ WARN("write failed: %d (%s)\n", errno, strerror(errno));
+ return E_FAIL;
+ }else /* OSS buffer full */
+ w_bytes = 0;
}
w_frames = w_bytes / This->fmt->nBlockAlign;
This->inbuf_frames += w_frames;
More information about the wine-cvs
mailing list