Always use Low CPU clock throttle mode; remove option.
This commit is contained in:
parent
9358e24213
commit
36d98f28a6
|
@ -138,7 +138,6 @@ namespace BizHawk.Client.Common
|
|||
public int SpeedPercent = 100;
|
||||
public int SpeedPercentAlternate = 400;
|
||||
public bool ClockThrottle = true;
|
||||
public bool ClockThrottleUseLowCPUMode = false;
|
||||
public bool AutoMinimizeSkipping = true;
|
||||
public bool VSyncThrottle = false;
|
||||
|
||||
|
|
|
@ -149,7 +149,6 @@
|
|||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.SpeedSkipSubMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ClockThrottleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ClockThrottleLowCPUMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.AudioThrottleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.VsyncThrottleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator27 = new System.Windows.Forms.ToolStripSeparator();
|
||||
|
@ -1459,7 +1458,6 @@
|
|||
//
|
||||
this.SpeedSkipSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ClockThrottleMenuItem,
|
||||
this.ClockThrottleLowCPUMenuItem,
|
||||
this.AudioThrottleMenuItem,
|
||||
this.VsyncThrottleMenuItem,
|
||||
this.toolStripSeparator27,
|
||||
|
@ -1490,162 +1488,155 @@
|
|||
// ClockThrottleMenuItem
|
||||
//
|
||||
this.ClockThrottleMenuItem.Name = "ClockThrottleMenuItem";
|
||||
this.ClockThrottleMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.ClockThrottleMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.ClockThrottleMenuItem.Text = "Clock Throttle";
|
||||
this.ClockThrottleMenuItem.Click += new System.EventHandler(this.ClockThrottleMenuItem_Click);
|
||||
//
|
||||
// ClockThrottleLowCPUMenuItem
|
||||
//
|
||||
this.ClockThrottleLowCPUMenuItem.Name = "ClockThrottleLowCPUMenuItem";
|
||||
this.ClockThrottleLowCPUMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.ClockThrottleLowCPUMenuItem.Text = "Clock Throttle (Low CPU) [experimental]";
|
||||
this.ClockThrottleLowCPUMenuItem.Click += new System.EventHandler(this.ClockThrottleMenuItem_Click);
|
||||
//
|
||||
// AudioThrottleMenuItem
|
||||
//
|
||||
this.AudioThrottleMenuItem.Name = "AudioThrottleMenuItem";
|
||||
this.AudioThrottleMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.AudioThrottleMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.AudioThrottleMenuItem.Text = "Audio Throttle";
|
||||
this.AudioThrottleMenuItem.Click += new System.EventHandler(this.AudioThrottleMenuItem_Click);
|
||||
//
|
||||
// VsyncThrottleMenuItem
|
||||
//
|
||||
this.VsyncThrottleMenuItem.Name = "VsyncThrottleMenuItem";
|
||||
this.VsyncThrottleMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.VsyncThrottleMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.VsyncThrottleMenuItem.Text = "VSync Throttle";
|
||||
this.VsyncThrottleMenuItem.Click += new System.EventHandler(this.VsyncThrottleMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator27
|
||||
//
|
||||
this.toolStripSeparator27.Name = "toolStripSeparator27";
|
||||
this.toolStripSeparator27.Size = new System.Drawing.Size(284, 6);
|
||||
this.toolStripSeparator27.Size = new System.Drawing.Size(199, 6);
|
||||
//
|
||||
// VsyncEnabledMenuItem
|
||||
//
|
||||
this.VsyncEnabledMenuItem.Name = "VsyncEnabledMenuItem";
|
||||
this.VsyncEnabledMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.VsyncEnabledMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.VsyncEnabledMenuItem.Text = "VSync Enabled";
|
||||
this.VsyncEnabledMenuItem.Click += new System.EventHandler(this.VsyncEnabledMenuItem_Click);
|
||||
//
|
||||
// toolStripMenuItem3
|
||||
//
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(284, 6);
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(199, 6);
|
||||
//
|
||||
// MinimizeSkippingMenuItem
|
||||
//
|
||||
this.MinimizeSkippingMenuItem.Name = "MinimizeSkippingMenuItem";
|
||||
this.MinimizeSkippingMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.MinimizeSkippingMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.MinimizeSkippingMenuItem.Text = "Auto-minimize skipping";
|
||||
this.MinimizeSkippingMenuItem.Click += new System.EventHandler(this.MinimizeSkippingMenuItem_Click);
|
||||
//
|
||||
// NeverSkipMenuItem
|
||||
//
|
||||
this.NeverSkipMenuItem.Name = "NeverSkipMenuItem";
|
||||
this.NeverSkipMenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.NeverSkipMenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.NeverSkipMenuItem.Text = "0 (never skip)";
|
||||
this.NeverSkipMenuItem.Click += new System.EventHandler(this.NeverSkipMenuItem_Click);
|
||||
//
|
||||
// Frameskip1MenuItem
|
||||
//
|
||||
this.Frameskip1MenuItem.Name = "Frameskip1MenuItem";
|
||||
this.Frameskip1MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip1MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip1MenuItem.Text = "1";
|
||||
this.Frameskip1MenuItem.Click += new System.EventHandler(this.Frameskip1MenuItem_Click);
|
||||
//
|
||||
// Frameskip2MenuItem
|
||||
//
|
||||
this.Frameskip2MenuItem.Name = "Frameskip2MenuItem";
|
||||
this.Frameskip2MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip2MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip2MenuItem.Text = "2";
|
||||
this.Frameskip2MenuItem.Click += new System.EventHandler(this.Frameskip2MenuItem_Click);
|
||||
//
|
||||
// Frameskip3MenuItem
|
||||
//
|
||||
this.Frameskip3MenuItem.Name = "Frameskip3MenuItem";
|
||||
this.Frameskip3MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip3MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip3MenuItem.Text = "3";
|
||||
this.Frameskip3MenuItem.Click += new System.EventHandler(this.Frameskip3MenuItem_Click);
|
||||
//
|
||||
// Frameskip4MenuItem
|
||||
//
|
||||
this.Frameskip4MenuItem.Name = "Frameskip4MenuItem";
|
||||
this.Frameskip4MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip4MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip4MenuItem.Text = "4";
|
||||
this.Frameskip4MenuItem.Click += new System.EventHandler(this.Frameskip4MenuItem_Click);
|
||||
//
|
||||
// Frameskip5MenuItem
|
||||
//
|
||||
this.Frameskip5MenuItem.Name = "Frameskip5MenuItem";
|
||||
this.Frameskip5MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip5MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip5MenuItem.Text = "5";
|
||||
this.Frameskip5MenuItem.Click += new System.EventHandler(this.Frameskip5MenuItem_Click);
|
||||
//
|
||||
// Frameskip6MenuItem
|
||||
//
|
||||
this.Frameskip6MenuItem.Name = "Frameskip6MenuItem";
|
||||
this.Frameskip6MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip6MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip6MenuItem.Text = "6";
|
||||
this.Frameskip6MenuItem.Click += new System.EventHandler(this.Frameskip6MenuItem_Click);
|
||||
//
|
||||
// Frameskip7MenuItem
|
||||
//
|
||||
this.Frameskip7MenuItem.Name = "Frameskip7MenuItem";
|
||||
this.Frameskip7MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip7MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip7MenuItem.Text = "7";
|
||||
this.Frameskip7MenuItem.Click += new System.EventHandler(this.Frameskip7MenuItem_Click);
|
||||
//
|
||||
// Frameskip8MenuItem
|
||||
//
|
||||
this.Frameskip8MenuItem.Name = "Frameskip8MenuItem";
|
||||
this.Frameskip8MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip8MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip8MenuItem.Text = "8";
|
||||
this.Frameskip8MenuItem.Click += new System.EventHandler(this.Frameskip8MenuItem_Click);
|
||||
//
|
||||
// Frameskip9MenuItem
|
||||
//
|
||||
this.Frameskip9MenuItem.Name = "Frameskip9MenuItem";
|
||||
this.Frameskip9MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Frameskip9MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Frameskip9MenuItem.Text = "9";
|
||||
this.Frameskip9MenuItem.Click += new System.EventHandler(this.Frameskip9MenuItem_Click);
|
||||
//
|
||||
// toolStripMenuItem5
|
||||
//
|
||||
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
|
||||
this.toolStripMenuItem5.Size = new System.Drawing.Size(284, 6);
|
||||
this.toolStripMenuItem5.Size = new System.Drawing.Size(199, 6);
|
||||
//
|
||||
// Speed50MenuItem
|
||||
//
|
||||
this.Speed50MenuItem.Name = "Speed50MenuItem";
|
||||
this.Speed50MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Speed50MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Speed50MenuItem.Text = "Speed 50%";
|
||||
this.Speed50MenuItem.Click += new System.EventHandler(this.Speed50MenuItem_Click);
|
||||
//
|
||||
// Speed75MenuItem
|
||||
//
|
||||
this.Speed75MenuItem.Name = "Speed75MenuItem";
|
||||
this.Speed75MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Speed75MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Speed75MenuItem.Text = "Speed 75%";
|
||||
this.Speed75MenuItem.Click += new System.EventHandler(this.Speed75MenuItem_Click);
|
||||
//
|
||||
// Speed100MenuItem
|
||||
//
|
||||
this.Speed100MenuItem.Name = "Speed100MenuItem";
|
||||
this.Speed100MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Speed100MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Speed100MenuItem.Text = "Speed 100%";
|
||||
this.Speed100MenuItem.Click += new System.EventHandler(this.Speed100MenuItem_Click);
|
||||
//
|
||||
// Speed150MenuItem
|
||||
//
|
||||
this.Speed150MenuItem.Name = "Speed150MenuItem";
|
||||
this.Speed150MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Speed150MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Speed150MenuItem.Text = "Speed 150%";
|
||||
this.Speed150MenuItem.Click += new System.EventHandler(this.Speed150MenuItem_Click);
|
||||
//
|
||||
// Speed200MenuItem
|
||||
//
|
||||
this.Speed200MenuItem.Name = "Speed200MenuItem";
|
||||
this.Speed200MenuItem.Size = new System.Drawing.Size(287, 22);
|
||||
this.Speed200MenuItem.Size = new System.Drawing.Size(202, 22);
|
||||
this.Speed200MenuItem.Text = "Speed 200%";
|
||||
this.Speed200MenuItem.Click += new System.EventHandler(this.Speed200MenuItem_Click);
|
||||
//
|
||||
|
@ -3498,7 +3489,6 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem Speed150MenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem Speed200MenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ClockThrottleMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ClockThrottleLowCPUMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
||||
private System.Windows.Forms.ToolStripMenuItem SaveConfigMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem LoadConfigMenuItem;
|
||||
|
|
|
@ -783,8 +783,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void FrameSkipMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||
{
|
||||
MinimizeSkippingMenuItem.Checked = Global.Config.AutoMinimizeSkipping;
|
||||
ClockThrottleMenuItem.Checked = Global.Config.ClockThrottle && !Global.Config.ClockThrottleUseLowCPUMode;
|
||||
ClockThrottleLowCPUMenuItem.Checked = Global.Config.ClockThrottle && Global.Config.ClockThrottleUseLowCPUMode;
|
||||
ClockThrottleMenuItem.Checked = Global.Config.ClockThrottle;
|
||||
VsyncThrottleMenuItem.Checked = Global.Config.VSyncThrottle;
|
||||
NeverSkipMenuItem.Checked = Global.Config.FrameSkip == 0;
|
||||
Frameskip1MenuItem.Checked = Global.Config.FrameSkip == 1;
|
||||
|
@ -933,14 +932,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void ClockThrottleMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Regular clock throttle and low CPU mode share this event
|
||||
bool clickedLowCPUMode = sender == ClockThrottleLowCPUMenuItem;
|
||||
bool isToggling = !Global.Config.ClockThrottle || clickedLowCPUMode == Global.Config.ClockThrottleUseLowCPUMode;
|
||||
if (isToggling)
|
||||
{
|
||||
Global.Config.ClockThrottle ^= true;
|
||||
}
|
||||
Global.Config.ClockThrottleUseLowCPUMode = Global.Config.ClockThrottle && clickedLowCPUMode;
|
||||
Global.Config.ClockThrottle ^= true;
|
||||
if (Global.Config.ClockThrottle)
|
||||
{
|
||||
var old = Global.Config.SoundThrottle;
|
||||
|
|
|
@ -47,14 +47,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
public bool cfg_lowcpumode
|
||||
{
|
||||
get
|
||||
{
|
||||
return Global.Config.ClockThrottleUseLowCPUMode;
|
||||
}
|
||||
}
|
||||
|
||||
public void Step(bool allowSleep, int forceFrameSkip)
|
||||
{
|
||||
int skipRate = (forceFrameSkip < 0) ? cfg_frameskiprate : forceFrameSkip;
|
||||
|
@ -337,33 +329,25 @@ namespace BizHawk.Client.EmuHawk
|
|||
return;
|
||||
}
|
||||
|
||||
int sleepy = (int)((timePerFrame - elapsedTime) * 1000 / afsfreq);
|
||||
if (cfg_lowcpumode && (sleepy >= 2 || paused))
|
||||
int sleepTime = (int)((timePerFrame - elapsedTime) * 1000 / afsfreq);
|
||||
if (sleepTime >= 2 || paused)
|
||||
{
|
||||
#if WINDOWS
|
||||
// The actual sleep time on Windows is always at least the requested time, plus a
|
||||
// bit of oversleep which usually does not exceed the timer period as specified in
|
||||
// timeBeginPeriod. So we'll subtract 1 ms from the sleep time to avoid sleeping
|
||||
// longer than desired.
|
||||
sleepy -= 1;
|
||||
// Assuming a timer period of 1 ms (i.e. timeBeginPeriod(1)): The actual sleep time
|
||||
// on Windows XP is generally within a half millisecond either way of the requested
|
||||
// time. The actual sleep time on Windows 8 is generally between the requested time
|
||||
// and up to a millisecond over. So we'll subtract 1 ms from the time to avoid
|
||||
// sleeping longer than desired.
|
||||
sleepTime -= 1;
|
||||
#else
|
||||
// The actual sleep time on OS X with Mono is always at least the request time,
|
||||
// plus a bit of oversleep which usually does not exceed 25% of the requested time.
|
||||
// So we'll scale the sleep time back to account for that 25%.
|
||||
sleepy = sleepy * 4 / 5;
|
||||
// The actual sleep time on OS X with Mono is generally between the request time
|
||||
// and up to 25% over. So we'll scale the sleep time back to account for that.
|
||||
sleepTime = sleepTime * 4 / 5;
|
||||
#endif
|
||||
Thread.Sleep(Math.Max(sleepy, 1));
|
||||
|
||||
// The original mode in the following 'else' block initially existed before the
|
||||
// call to timeBeginPeriod was added, which may explain its aversion to sleeping
|
||||
// given the default timer period of 15.625 ms.
|
||||
Thread.Sleep(Math.Max(sleepTime, 1));
|
||||
}
|
||||
else if (sleepy >= 10 || paused)
|
||||
{
|
||||
// reduce it further beacuse Sleep usually sleeps for more than the amount we tell it to
|
||||
Thread.Sleep(sleepy / 2);
|
||||
}
|
||||
else if (sleepy > 0) // spin for <1 millisecond waits
|
||||
else if (sleepTime > 0) // spin for <1 millisecond waits
|
||||
{
|
||||
Thread.Yield(); // limit to other threads on the same CPU core for other short waits
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue