Fixed issue with sleep being invoked too often

Supposedly the code was needed to help reset the color
of the lightbar. It doesn't seem like it is really needed
though. Keep an eye on this.
This commit is contained in:
Travis Nickles 2017-03-22 21:45:20 -07:00
parent d295c1af2a
commit ecd36237e7
2 changed files with 41 additions and 7 deletions

View File

@ -155,7 +155,8 @@ namespace DS4Windows
else else
color = new DS4Color(0, 0, 0); color = new DS4Color(0, 0, 0);
} }
bool distanceprofile = (ProfilePath[deviceNum].ToLower().Contains("distance") || tempprofilename[deviceNum].ToLower().Contains("distance")); bool distanceprofile = DistanceProfiles[deviceNum] || tempprofileDistance[deviceNum];
//distanceprofile = (ProfilePath[deviceNum].ToLower().Contains("distance") || tempprofilename[deviceNum].ToLower().Contains("distance"));
if (distanceprofile && !defualtLight) if (distanceprofile && !defualtLight)
{ //Thing I did for Distance { //Thing I did for Distance
float rumble = device.LeftHeavySlowRumble / 2.55f; float rumble = device.LeftHeavySlowRumble / 2.55f;
@ -202,8 +203,11 @@ namespace DS4Windows
} }
if (device.LightBarOnDuration != haptics.LightBarFlashDurationOn && device.LightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0) if (device.LightBarOnDuration != haptics.LightBarFlashDurationOn && device.LightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0)
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1; haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1;
if (device.LightBarOnDuration == 1) //helps better reset the color
System.Threading.Thread.Sleep(5); // Comment out code for now. This condition gets hit too often and bogs down the GUI
//if (device.LightBarOnDuration == 1) //helps better reset the color
// System.Threading.Thread.Sleep(5);
device.pushHapticState(haptics); device.pushHapticState(haptics);
} }

View File

@ -143,6 +143,7 @@ namespace DS4Windows
static string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; static string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
public static string appdatapath; public static string appdatapath;
public static string[] tempprofilename = new string[5] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; public static string[] tempprofilename = new string[5] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
public static bool[] tempprofileDistance = new bool[5] { false, false, false, false, false };
public static void SaveWhere(string path) public static void SaveWhere(string path)
{ {
@ -319,6 +320,7 @@ namespace DS4Windows
public static bool[] MouseAccel => m_Config.mouseAccel; public static bool[] MouseAccel => m_Config.mouseAccel;
public static string[] LaunchProgram => m_Config.launchProgram; public static string[] LaunchProgram => m_Config.launchProgram;
public static string[] ProfilePath => m_Config.profilePath; public static string[] ProfilePath => m_Config.profilePath;
public static bool[] DistanceProfiles => m_Config.distanceProfiles;
public static List<string>[] ProfileActions => m_Config.profileActions; public static List<string>[] ProfileActions => m_Config.profileActions;
public static void UpdateDS4CSetting (int deviceNum, string buttonName, bool shift, object action, string exts, DS4KeyType kt, int trigger = 0) public static void UpdateDS4CSetting (int deviceNum, string buttonName, bool shift, object action, string exts, DS4KeyType kt, int trigger = 0)
@ -410,12 +412,14 @@ namespace DS4Windows
{ {
m_Config.LoadProfile(device, launchprogram, control); m_Config.LoadProfile(device, launchprogram, control);
tempprofilename[device] = string.Empty; tempprofilename[device] = string.Empty;
tempprofileDistance[device] = false;
} }
public static void LoadTempProfile(int device, string name, bool launchprogram, ControlService control) public static void LoadTempProfile(int device, string name, bool launchprogram, ControlService control)
{ {
m_Config.LoadProfile(device, launchprogram, control, appdatapath + @"\Profiles\" + name + ".xml"); m_Config.LoadProfile(device, launchprogram, control, appdatapath + @"\Profiles\" + name + ".xml");
tempprofilename[device] = name; tempprofilename[device] = name;
tempprofileDistance[device] = name.ToLower().Contains("distance");
} }
public static bool Save() public static bool Save()
@ -512,6 +516,8 @@ namespace DS4Windows
public Boolean[] ledAsBattery = { false, false, false, false, false }; public Boolean[] ledAsBattery = { false, false, false, false, false };
public Byte[] flashType = { 0, 0, 0, 0, 0 }; public Byte[] flashType = { 0, 0, 0, 0, 0 };
public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty, String.Empty }; public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty, String.Empty };
// Cache properties instead of performing a string comparison every frame
public bool[] distanceProfiles = { false, false, false, false, false };
public Byte[] rumble = { 100, 100, 100, 100, 100 }; public Byte[] rumble = { 100, 100, 100, 100, 100 };
public Byte[] touchSensitivity = { 100, 100, 100, 100, 100 }; public Byte[] touchSensitivity = { 100, 100, 100, 100, 100 };
public Byte[] l2Deadzone = { 0, 0, 0, 0, 0 }, r2Deadzone = { 0, 0, 0, 0, 0 }; public Byte[] l2Deadzone = { 0, 0, 0, 0, 0 }, r2Deadzone = { 0, 0, 0, 0, 0 };
@ -1784,13 +1790,37 @@ namespace DS4Windows
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/formHeight"); Int32.TryParse(Item.InnerText, out formHeight); } try { Item = m_Xdoc.SelectSingleNode("/Profile/formHeight"); Int32.TryParse(Item.InnerText, out formHeight); }
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/Controller1"); profilePath[0] = Item.InnerText; } try {
Item = m_Xdoc.SelectSingleNode("/Profile/Controller1"); profilePath[0] = Item.InnerText;
if (profilePath[0].ToLower().Contains("distance"))
{
distanceProfiles[0] = true;
}
}
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/Controller2"); profilePath[1] = Item.InnerText; } try {
Item = m_Xdoc.SelectSingleNode("/Profile/Controller2"); profilePath[1] = Item.InnerText;
if (profilePath[1].ToLower().Contains("distance"))
{
distanceProfiles[1] = true;
}
}
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/Controller3"); profilePath[2] = Item.InnerText; } try {
Item = m_Xdoc.SelectSingleNode("/Profile/Controller3"); profilePath[2] = Item.InnerText;
if (profilePath[2].ToLower().Contains("distance"))
{
distanceProfiles[2] = true;
}
}
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/Controller4"); profilePath[3] = Item.InnerText; } try {
Item = m_Xdoc.SelectSingleNode("/Profile/Controller4"); profilePath[3] = Item.InnerText;
if (profilePath[3].ToLower().Contains("distance"))
{
distanceProfiles[3] = true;
}
}
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/Profile/LastChecked"); DateTime.TryParse(Item.InnerText, out lastChecked); } try { Item = m_Xdoc.SelectSingleNode("/Profile/LastChecked"); DateTime.TryParse(Item.InnerText, out lastChecked); }
catch { missingSetting = true; } catch { missingSetting = true; }