diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 5edfb35aed..e004816a1f 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -2375,9 +2375,20 @@ namespace BizHawk.Client.EmuHawk } } + private DateTime _lastMessageCheck = DateTime.MinValue; + private void CheckMessages() { - Application.DoEvents(); + var currentTime = DateTime.Now; + // only check window messages a maximum of once per millisecond + // this check is irrelvant for the 99% of cases where fps are <1k + // but gives a slight fps boost in those scenarios + if ((currentTime - _lastMessageCheck).Milliseconds > 0) + { + _lastMessageCheck = currentTime; + Application.DoEvents(); + } + if (ActiveForm != null) { ScreenSaver.ResetTimerPeriodically();