From 8dc79b2cdfc3d2250707e65d2c355033203b8712 Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Tue, 12 Feb 2008 21:22:44 +0100 Subject: [PATCH] prevent forking a huge number of player processes by limiting them to a maximum of 10 per second --- src/sim/w_sound.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/sim/w_sound.c b/src/sim/w_sound.c index 3f2ec38..7558e47 100644 --- a/src/sim/w_sound.c +++ b/src/sim/w_sound.c @@ -271,9 +271,22 @@ ShutDownSound() MakeSound(char *channel, char *id) { char filename[256], player[256]; + static struct timeval last = {0, 0}; + struct timeval now; + unsigned int diff; int i; pid_t pid; + gettimeofday(&now, NULL); + + diff = ((now.tv_sec - last.tv_sec) * 1000000) + + (now.tv_usec - last.tv_usec); + + if (diff < 100000) + return; + + last = now; + if (!UserSoundOn) return; if (!SoundInitialized) return; -- 2.39.5