From 312c326def9b4cc20642ea8f2692d4f2da1406ad Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 May 2007 01:02:06 +0000 Subject: Fix module-oss for devices that return EAGAIN when we don't expect it. (Closes #66) git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1442 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-oss.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/module-oss.c b/src/modules/module-oss.c index 965944a7..22b12ef7 100644 --- a/src/modules/module-oss.c +++ b/src/modules/module-oss.c @@ -169,10 +169,14 @@ static void do_write(struct userdata *u) { assert(memchunk->length); if ((r = pa_iochannel_write(u->io, (uint8_t*) memchunk->memblock->data + memchunk->index, memchunk->length)) < 0) { - pa_log("write() failed: %s", pa_cstrerror(errno)); - clear_up(u); - pa_module_unload_request(u->module); + if (errno != EAGAIN) { + pa_log("write() failed: %s", pa_cstrerror(errno)); + + clear_up(u); + pa_module_unload_request(u->module); + } + break; } @@ -224,11 +228,14 @@ static void do_read(struct userdata *u) { assert(memchunk.memblock); if ((r = pa_iochannel_read(u->io, memchunk.memblock->data, memchunk.memblock->length)) < 0) { pa_memblock_unref(memchunk.memblock); + if (errno != EAGAIN) { pa_log("read() failed: %s", pa_cstrerror(errno)); + clear_up(u); pa_module_unload_request(u->module); } + break; } -- cgit