about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authorJoel de Vahl <joel@stalverk80.se>2009-01-11 12:10:30 +0000
committerJoel de Vahl <joel@stalverk80.se>2009-01-11 12:10:30 +0000
commit2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d (patch)
tree846542258748f31953eadbe770fe3e6bbde191ac /src/engine
parent2aafe11723e8c30b0482bbefb4c1c9a25fba92b3 (diff)
downloadzcatch-2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d.tar.gz
zcatch-2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d.zip
use dmg for osx deliver, build universal binary, fix backspace being entered as a character
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/ec_snd.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/engine/client/ec_snd.c b/src/engine/client/ec_snd.c
index a7219b65..ed66cc1f 100644
--- a/src/engine/client/ec_snd.c
+++ b/src/engine/client/ec_snd.c
@@ -36,7 +36,7 @@ typedef struct
 	int pan;
 } CHANNEL;
 
-typedef struct VOICE_t
+typedef struct
 {
 	SAMPLE *snd;
 	CHANNEL *channel;
@@ -59,6 +59,8 @@ static int center_y = 0;
 static int mixing_rate = 48000;
 static volatile int sound_volume = 100;
 
+static int next_voice = 0;
+
 void snd_set_channel(int cid, float vol, float pan)
 {
 	channels[cid].vol = (int)(vol*255.0f);
@@ -73,12 +75,13 @@ static int play(int cid, int sid, int flags, float x, float y)
 	lock_wait(sound_lock);
 	
 	/* search for voice */
-	/* TODO: fix this linear search */
 	for(i = 0; i < NUM_VOICES; i++)
 	{
-		if(!voices[i].snd)
+		int id = (next_voice + i) % NUM_VOICES;
+		if(!voices[id].snd)
 		{
-			vid = i;
+			vid = id;
+			next_voice = id+1;
 			break;
 		}
 	}