--- wslib/audio_voxware.c.orig Fri Mar 31 23:14:40 2000 +++ wslib/audio_voxware.c Wed May 24 11:08:24 2000 @@ -403,6 +403,7 @@ long blkFrames; /* number of frames in current audio block */ int blockSize = 8192; /* Size of an audio block buffer in frames */ int i; + u_int8_t fakebuffer[2] = {0, 0}; #ifdef DEBUG fprintf(stderr, " >> writing data\n"); @@ -413,7 +414,11 @@ SErrorCode = SERR_NOMEMORY; return -1; } - + + /* Following line is a simple workarround for buggy pcm driver, which seens need at least to write() + calls for sound to be actually played */ + write(audiofd, fakebuffer, 2); + curFrame = 0; while (curFrame < afInfo->FrameCount) { if ((blkFrames = (afInfo->FrameCount - curFrame)) > blockSize) { @@ -503,6 +508,7 @@ long blkFrames; /* number of frames in current audio block */ int blockSize = 4096; /* Size of an audio block buffer in frames */ int i; + u_int16_t fakebuffer[2] = {0, 0}; #ifdef DEBUG fprintf(stderr, " >> writing data\n"); @@ -513,7 +519,11 @@ SErrorCode = SERR_NOMEMORY; return -1; } - + + /* Following line is a simple workarround for buggy pcm driver, which seens need at least to write() + calls for sound to be actually played */ + write(audiofd, fakebuffer, 4); + curFrame = 0; while (curFrame < afInfo->FrameCount) { if ((blkFrames = (afInfo->FrameCount - curFrame)) > blockSize) {