Virtualpad - another performance improvement for Analogstick controls

This commit is contained in:
adelikat 2014-07-26 17:22:58 +00:00
parent 9210b4d9a1
commit dc8fa8bd87
2 changed files with 27 additions and 8 deletions

View File

@ -154,13 +154,28 @@ namespace BizHawk.Client.EmuHawk
{
if (AnalogStick.HasValue)
{
ManualX.Value = AnalogStick.X;
ManualY.Value = AnalogStick.Y;
// Setting .Value of a numeric causes a draw, so avoid it unless necessary
if (ManualX.Value != AnalogStick.X)
{
ManualX.Value = AnalogStick.X;
}
if (ManualY.Value != AnalogStick.Y)
{
ManualY.Value = AnalogStick.Y;
}
}
else
{
ManualX.Value = 0;
ManualY.Value = 0;
if (ManualX.Value != 0)
{
ManualX.Value = 0;
}
if (ManualY.Value != 0)
{
ManualY.Value = 0;
}
}
}

View File

@ -158,6 +158,7 @@ namespace BizHawk.Client.EmuHawk
private int MidX { get { return (int)((MaxX + 0.5) / 2); } }
private int MidY { get { return (int)((MaxY + 0.5) / 2); } }
private void AnalogControlPanel_Paint(object sender, PaintEventArgs e)
{
unchecked
@ -247,10 +248,13 @@ namespace BizHawk.Client.EmuHawk
public void Clear()
{
X = Y = 0;
HasValue = false;
DoClearCallback();
Refresh();
if (X != 0 || Y != 0 || HasValue)
{
X = Y = 0;
HasValue = false;
DoClearCallback();
Refresh();
}
}
public void Set(IController controller)