debugger: really honestly only check registers once, in GenerateUI().

throws NotImplemented if can't set registers, InvalidOperation otherwise (since it deliberately tries an invalid operation just to check availability).
This commit is contained in:
feos 2016-02-27 21:30:14 +03:00
parent f590ed9e19
commit bfece077b2
1 changed files with 10 additions and 11 deletions

View File

@ -19,6 +19,8 @@ namespace BizHawk.Client.EmuHawk
public GenericDebugger ParentDebugger { get; set; }
private bool _supressChangeEvents = false;
private bool _canGetCpuRegisters = false;
private bool _canSetCpuRegisters = false;
public RegisterBoxControl()
{
@ -36,12 +38,8 @@ namespace BizHawk.Client.EmuHawk
if (this.Enabled)
{
var registers = Core.GetCpuFlagsAndRegisters();
_supressChangeEvents = true;
var canSetCpuRegisters = CanSetCpuRegisters;
foreach (var register in registers)
{
if (Controls.OfType<Panel>().Any(p => p.Name == "FlagPanel"))
@ -61,7 +59,7 @@ namespace BizHawk.Client.EmuHawk
});
}
if (canSetCpuRegisters)
if (_canSetCpuRegisters)
{
Controls
@ -133,10 +131,11 @@ namespace BizHawk.Client.EmuHawk
public void GenerateUI()
{
this.Controls.Clear();
var canget = CanGetCpuRegisters;
var canset = CanSetCpuRegisters;
if (!canget && !canset)
_canGetCpuRegisters = CanGetCpuRegisters;
_canSetCpuRegisters = CanSetCpuRegisters;
if (!_canGetCpuRegisters && !_canSetCpuRegisters)
{
ParentDebugger.DisableRegisterBox();
this.Enabled = false;
@ -162,7 +161,7 @@ namespace BizHawk.Client.EmuHawk
Size = new Size(UIHelper.ScaleX(width + 5), UIHelper.ScaleY(15))
});
if (canset)
if (_canSetCpuRegisters)
{
var t = new TextBox
{
@ -209,7 +208,7 @@ namespace BizHawk.Client.EmuHawk
});
}
y += UIHelper.ScaleY(this.Font.Height + (canset ? 10 : 4));
y += UIHelper.ScaleY(this.Font.Height + (_canSetCpuRegisters ? 10 : 4));
}
var flags = registers.Where(r => r.Value.BitSize == 1);
@ -236,7 +235,7 @@ namespace BizHawk.Client.EmuHawk
Location = new Point(UIHelper.ScaleX(40), y),
Dock = DockStyle.Left,
Size = new Size(UIHelper.ScaleX(23), UIHelper.ScaleY(23)),
Enabled = canset
Enabled = _canSetCpuRegisters
};
c.CheckedChanged += (o, e) =>