mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Provide a small workarround to fix a bug in the pcm driver. The driver seems
need at least two write() calls for sound to be actually played. I have notified Cameron Grant <cg@FreeBSD.org> about the issue.
This commit is contained in:
parent
63caeafa47
commit
40e295b0f7
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=28724
1 changed files with 44 additions and 0 deletions
44
audio/wsoundserver/files/patch-ae
Normal file
44
audio/wsoundserver/files/patch-ae
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
--- 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) {
|
Loading…
Add table
Reference in a new issue