40e295b0f7
need at least two write() calls for sound to be actually played. I have notified Cameron Grant <cg@FreeBSD.org> about the issue.
44 lines
1.4 KiB
Text
44 lines
1.4 KiB
Text
--- 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) {
|