# HG changeset patch # User nenolod # Date 1162710225 28800 # Node ID 3f2e3c5c30ed451893d2614866d515b3e7f64f2b # Parent 803734431d3ada4a87a47efa8cb3b5875598891b [svn] - make esd plugin assume that write() isn't always successful due to threading contingency. closes #427. patch by . diff -r 803734431d3a -r 3f2e3c5c30ed ChangeLog --- a/ChangeLog Sat Nov 04 13:14:27 2006 -0800 +++ b/ChangeLog Sat Nov 04 23:03:45 2006 -0800 @@ -1,3 +1,11 @@ +2006-11-04 21:14:27 +0000 Aaron Sheldon + revision [432] + Works again on x86 + + trunk/src/sap/sap_plug.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + + 2006-11-04 20:18:44 +0000 William Pitcock revision [430] - gthread and produce_audio diff -r 803734431d3a -r 3f2e3c5c30ed src/esd/audio.c --- a/src/esd/audio.c Sat Nov 04 13:14:27 2006 -0800 +++ b/src/esd/audio.c Sat Nov 04 23:03:45 2006 -0800 @@ -299,10 +299,19 @@ length = ep->mod_samples(&data, length, input_format, input_frequency, input_channels); - if (esd_translate) - output_bytes += write(fd, esd_translate(data, length), length); - else - output_bytes += write(fd, data, length); + while (length > 0) { + int num_written; + if (esd_translate) + num_written = write(fd, esd_translate(data, length), length); + else + num_written = write(fd, data, length); + if (num_written <= 0) + break; + length -= num_written; + data += num_written; + output_bytes += num_written; + } + } }