add a PauseChanged event to mainform, have the debugger subscribe to it and refresh instead of refreshing every frame, add a refresh menu item with F5 hotkey just in case

This commit is contained in:
adelikat 2015-01-24 03:10:21 +00:00
parent 027706be70
commit f89f8fc457
5 changed files with 68 additions and 5 deletions

View File

@ -503,6 +503,41 @@ namespace BizHawk.Client.EmuHawk
#endregion`
#region Pause
private bool _emulatorPaused;
public bool EmulatorPaused
{
get
{
return _emulatorPaused;
}
private set
{
_emulatorPaused = value;
if (OnPauseChanged != null)
{
OnPauseChanged(this, new PauseChangedEventArgs(_emulatorPaused));
}
}
}
public delegate void PauseChangedEventHandler(object sender, PauseChangedEventArgs e);
public event PauseChangedEventHandler OnPauseChanged;
public class PauseChangedEventArgs : EventArgs
{
public PauseChangedEventArgs(bool paused)
{
Paused = paused;
}
public bool Paused { get; private set; }
}
#endregion
#region Properties
public string CurrentlyOpenRom;
@ -513,7 +548,6 @@ namespace BizHawk.Client.EmuHawk
public bool TurboFastForward = false;
public bool RestoreReadWriteOnStop = false;
public bool UpdateFrame = false;
public bool EmulatorPaused { get; private set; }
private int? _pauseOnFrame;
public int? PauseOnFrame // If set, upon completion of this frame, the client wil pause

View File

@ -54,6 +54,8 @@
this.SeekToBtn = new System.Windows.Forms.Button();
this.SeekToBox = new BizHawk.Client.EmuHawk.HexTextBox();
this.CancelSeekBtn = new System.Windows.Forms.Button();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.RefreshMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.RegistersGroupBox.SuspendLayout();
this.BreakpointsGroupBox.SuspendLayout();
@ -93,7 +95,9 @@
this.DebugSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.StepIntoMenuItem,
this.StepOverMenuItem,
this.StepOutMenuItem});
this.StepOutMenuItem,
this.toolStripSeparator1,
this.RefreshMenuItem});
this.DebugSubMenu.Name = "DebugSubMenu";
this.DebugSubMenu.Size = new System.Drawing.Size(54, 20);
this.DebugSubMenu.Text = "&Debug";
@ -315,6 +319,19 @@
this.CancelSeekBtn.UseVisualStyleBackColor = true;
this.CancelSeekBtn.Click += new System.EventHandler(this.CancelSeekBtn_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(174, 6);
//
// RefreshMenuItem
//
this.RefreshMenuItem.Name = "RefreshMenuItem";
this.RefreshMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;
this.RefreshMenuItem.Size = new System.Drawing.Size(177, 22);
this.RefreshMenuItem.Text = "Refresh";
this.RefreshMenuItem.Click += new System.EventHandler(this.RefreshMenuItem_Click);
//
// GenericDebugger
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -374,5 +391,7 @@
private HexTextBox SeekToBox;
private System.Windows.Forms.Button CancelSeekBtn;
private System.Windows.Forms.Button ToPCBtn;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripMenuItem RefreshMenuItem;
}
}

View File

@ -189,5 +189,10 @@ namespace BizHawk.Client.EmuHawk
Clipboard.SetDataObject(blob.ToString());
}
}
private void OnPauseChanged(object sender, MainForm.PauseChangedEventArgs e)
{
FullUpdate();
}
}
}

View File

@ -136,9 +136,7 @@ namespace BizHawk.Client.EmuHawk
public void UpdateValues()
{
// TODO: probably none of this
RegisterPanel.UpdateValues();
UpdateDisassembler();
// Nothing to do
}
private void FullUpdate()

View File

@ -34,6 +34,7 @@ namespace BizHawk.Client.EmuHawk
private void EngageDebugger()
{
DisassemblyLines.Clear();
GlobalWin.MainForm.OnPauseChanged += OnPauseChanged;
CancelSeekBtn.Enabled = false;
if (CanDisassemble)
{
@ -147,6 +148,7 @@ namespace BizHawk.Client.EmuHawk
private void DisengageDebugger()
{
BreakPointControl1.Shutdown();
GlobalWin.MainForm.OnPauseChanged -= OnPauseChanged;
}
public void DisableRegisterBox()
@ -289,5 +291,10 @@ namespace BizHawk.Client.EmuHawk
{
UpdateDisassembler();
}
private void RefreshMenuItem_Click(object sender, EventArgs e)
{
FullUpdate();
}
}
}