From eb04402eb853c78f51b1e434ef8f6d066e377e28 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 16 Apr 2001 21:29:12 +0000 Subject: [PATCH] Put back Robert de Bath's second level of bell overload tracking. It had a useful purpose: when primary overload handling is disabled, it prevents MessageBeep calls overloading the program, because they don't cancel each other like async PlaySounds do. git-svn-id: svn://svn.tartarus.org/sgt/putty@1056 cda61777-01e9-0310-a592-d414129be87e --- window.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/window.c b/window.c index 4c4360c4..29828965 100644 --- a/window.c +++ b/window.c @@ -2663,7 +2663,21 @@ void fatalbox(char *fmt, ...) { */ void beep(int mode) { if (mode == BELL_DEFAULT) { + /* + * For MessageBeep style bells, we want to be careful of + * timing, because they don't have the nice property of + * PlaySound bells that each one cancels the previous + * active one. So we limit the rate to one per 50ms or so. + */ + static long lastbeep = 0; + long now, beepdiff; + + now = GetTickCount(); + beepdiff = now - lastbeep; + if (beepdiff >= 0 && beepdiff < 50) + return; MessageBeep(MB_OK); + lastbeep = now; } else if (mode == BELL_WAVEFILE) { if (!PlaySound(cfg.bell_wavefile, NULL, SND_ASYNC | SND_FILENAME)) { char buf[sizeof(cfg.bell_wavefile)+80]; -- 2.11.0