summaryrefslogtreecommitdiff
path: root/audio/wsoundserver/files/patch-ae
blob: 8fbf4667cc7eb1d9185325766994359387a53035 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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) {