From: Michael Gernoth Date: Tue, 12 Feb 2008 20:22:44 +0000 (+0100) Subject: prevent forking a huge number of player processes by limiting them to X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/micropolis/commitdiff_plain/8dc79b2cdfc3d2250707e65d2c355033203b8712?ds=inline prevent forking a huge number of player processes by limiting them to a maximum of 10 per second --- 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;