Change timer usage for main form

This commit is contained in:
Travis Nickles 2017-05-09 07:24:46 -07:00
parent 6074445c03
commit 9e512deaeb
2 changed files with 82 additions and 35 deletions

View File

@ -35,8 +35,8 @@ namespace DS4Windows
protected PictureBox[] statPB;
protected ToolStripMenuItem[] shortcuts;
WebClient wc = new WebClient();
//Timer test = new Timer(), hotkeysTimer = new Timer();
Timer hotkeysTimer = new Timer();
Timer autoProfilesTimer = new Timer();
string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
string appDataPpath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Windows";
string oldappdatapath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool";
@ -318,6 +318,9 @@ namespace DS4Windows
lights[i].BackColor = MainColor[i].ToColorA;
}
autoProfilesTimer.Tick += CheckAutoProfiles;
autoProfilesTimer.Interval = 1000;
LoadP();
Global.ControllerStatusChange += ControllerStatusChange;
Global.BatteryStatusChange += BatteryStatusUpdate;
@ -328,6 +331,13 @@ namespace DS4Windows
Enable_Controls(2, false);
Enable_Controls(3, false);
btnStartStop.Text = Properties.Resources.StartText;
hotkeysTimer.Tick += Hotkeys;
if (SwipeProfiles)
{
hotkeysTimer.Start();
}
if (btnStartStop.Enabled && start)
btnStartStop_Clicked();
@ -366,10 +376,6 @@ namespace DS4Windows
File.Delete(exepath + "\\Updater.exe");
}
//test.Start();
hotkeysTimer.Start();
hotkeysTimer.Tick += Hotkeys;
//test.Tick += test_Tick;
if (!Directory.Exists(appdatapath + "\\Virtual Bus Driver"))
linkUninstall.Visible = false;
@ -542,6 +548,7 @@ namespace DS4Windows
value = false;
if (!this.IsHandleCreated) CreateHandle();
}
base.SetVisibleCore(value);
}
@ -572,6 +579,7 @@ namespace DS4Windows
switch (e.Mode)
{
case PowerModes.Resume:
{
if (btnStartStop.Text == Properties.Resources.StartText && wasrunning)
{
DS4LightBar.shuttingdown = false;
@ -579,7 +587,9 @@ namespace DS4Windows
btnStartStop_Clicked();
}
break;
}
case PowerModes.Suspend:
{
if (btnStartStop.Text == Properties.Resources.StopText)
{
DS4LightBar.shuttingdown = true;
@ -588,13 +598,8 @@ namespace DS4Windows
}
break;
}
default: break;
}
private void test_Tick(object sender, EventArgs e)
{
//testing values
lbTest.Visible = true;
lbTest.Text = ((int)(Program.rootHub.ExposedState[0].AccelX * 2) / 2f).ToString();
}
void Hotkeys(object sender, EventArgs e)
@ -625,13 +630,24 @@ namespace DS4Windows
}
}
if (bat != null && bat.HasExited && runningBat)
{
Process.Start("explorer.exe");
bat = null;
runningBat = false;
}
}
private void CheckAutoProfiles(object sender, EventArgs e)
{
//Check for process for auto profiles
if (tempProfileProgram == "null")
{
for (int i = 0; i < programpaths.Count; i++)
string windowName = GetTopWindowName().ToLower().Replace('/', '\\');
for (int i = 0, pathsLen = programpaths.Count; i < pathsLen; i++)
{
string name = programpaths[i].ToLower().Replace('/', '\\');
if (name == GetTopWindowName().ToLower().Replace('/', '\\'))
if (name == windowName)
{
for (int j = 0; j < 4; j++)
{
@ -649,6 +665,7 @@ namespace DS4Windows
{
btnStartStop_Clicked();
hotkeysTimer.Start();
autoProfilesTimer.Start();
btnStartStop.Text = Properties.Resources.StartText;
}
}
@ -660,7 +677,8 @@ namespace DS4Windows
}
else
{
if (tempProfileProgram != GetTopWindowName().ToLower().Replace('/', '\\'))
string windowName = GetTopWindowName().ToLower().Replace('/', '\\');
if (tempProfileProgram != windowName)
{
tempProfileProgram = "null";
for (int j = 0; j < 4; j++)
@ -678,14 +696,7 @@ namespace DS4Windows
}
}
if (bat != null && bat.HasExited && runningBat)
{
Process.Start("explorer.exe");
bat = null;
runningBat = false;
}
GC.Collect();
//GC.Collect();
}
public void LoadP()
@ -716,7 +727,19 @@ namespace DS4Windows
else
turnOffTempProfiles.Add(false);
}
int pathCount = programpaths.Count;
bool timerEnabled = autoProfilesTimer.Enabled;
if (pathCount > 0 && !timerEnabled)
{
autoProfilesTimer.Start();
}
else if (pathCount == 0 && timerEnabled)
{
autoProfilesTimer.Stop();
}
}
string originalsettingstext;
private void CheckDrivers()
{
@ -947,6 +970,7 @@ namespace DS4Windows
this.ShowInTaskbar = true;
this.FormBorderStyle = FormBorderStyle.Sizable;
}
chData.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);
}
@ -954,12 +978,22 @@ namespace DS4Windows
{
btnStartStop_Clicked();
}
public void btnStartStop_Clicked(bool log = true)
{
if (btnStartStop.Text == Properties.Resources.StartText)
{
Program.rootHub.Start(log);
if (SwipeProfiles && !hotkeysTimer.Enabled)
{
hotkeysTimer.Start();
}
if (programpaths.Count > 0 && !autoProfilesTimer.Enabled)
{
autoProfilesTimer.Start();
}
btnStartStop.Text = Properties.Resources.StopText;
}
else if (btnStartStop.Text == Properties.Resources.StopText)
@ -967,12 +1001,14 @@ namespace DS4Windows
blankControllerTab();
Program.rootHub.Stop(log);
hotkeysTimer.Stop();
autoProfilesTimer.Stop();
btnStartStop.Text = Properties.Resources.StartText;
blankControllerTab();
}
startToolStripMenuItem.Text = btnStartStop.Text;
}
protected void btnClear_Click(object sender, EventArgs e)
{
lvDebug.Items.Clear();
@ -2046,7 +2082,17 @@ namespace DS4Windows
private void cBSwipeProfiles_CheckedChanged(object sender, EventArgs e)
{
SwipeProfiles = cBSwipeProfiles.Checked;
bool swipe = false;
SwipeProfiles = swipe = cBSwipeProfiles.Checked;
bool timerEnabled = hotkeysTimer.Enabled;
if (swipe && !timerEnabled)
{
hotkeysTimer.Start();
}
else if (!swipe && timerEnabled)
{
hotkeysTimer.Stop();
}
}
private void cBQuickCharge_CheckedChanged(object sender, EventArgs e)

View File

@ -355,7 +355,7 @@ namespace DS4Windows
return result;
}
private SynchronizationContext context = null;
private SynchronizationContext uiContext = null;
public DS4Device(HidDevice hidDevice)
{
@ -388,7 +388,7 @@ namespace DS4Windows
touchpad = new DS4Touchpad();
sixAxis = new DS4SixAxis();
context = SynchronizationContext.Current;
uiContext = SynchronizationContext.Current;
}
public void StartUpdate()
@ -402,14 +402,15 @@ namespace DS4Windows
//Console.WriteLine(MacAddress.ToString() + " " + System.DateTime.UtcNow.ToString("o") + "> start");
sendOutputReport(true); // initialize the output report
ds4Output = new Thread(performDs4Output);
ds4Output.Priority = ThreadPriority.AboveNormal;
ds4Output.Name = "DS4 Output thread: " + Mac;
ds4Output.IsBackground = true;
if (conType == ConnectionType.BT)
{
// Only use the output thread for Bluetooth connections.
// USB will utilize overlapped IO instead.
ds4Output = new Thread(performDs4Output);
ds4Output.Priority = ThreadPriority.AboveNormal;
ds4Output.Name = "DS4 Output thread: " + Mac;
ds4Output.IsBackground = true;
ds4Output.Start();
}
@ -578,7 +579,7 @@ namespace DS4Windows
sendOutputReport(true); // Kick Windows into noticing the disconnection.
StopOutputUpdate();
isDisconnecting = true;
context.Send(new SendOrPostCallback(delegate (object state4)
uiContext.Send(new SendOrPostCallback(delegate (object state4)
{
Removal?.Invoke(this, EventArgs.Empty);
}), null);
@ -601,7 +602,7 @@ namespace DS4Windows
Console.WriteLine(MacAddress.ToString() + " " + System.DateTime.UtcNow.ToString("o") + "> disconnect due to read failure: " + Marshal.GetLastWin32Error());
StopOutputUpdate();
isDisconnecting = true;
context.Send(new SendOrPostCallback(delegate (object state4)
uiContext.Send(new SendOrPostCallback(delegate (object state4)
{
Removal?.Invoke(this, EventArgs.Empty);
}), null);
@ -918,7 +919,7 @@ namespace DS4Windows
if (callRemoval)
{
context.Send(new SendOrPostCallback(delegate (object state)
uiContext.Send(new SendOrPostCallback(delegate (object state)
{
Removal?.Invoke(this, EventArgs.Empty);
}), null);
@ -951,7 +952,7 @@ namespace DS4Windows
isDisconnecting = true;
StopOutputUpdate();
context.Send(new SendOrPostCallback(delegate (object state4)
uiContext.Send(new SendOrPostCallback(delegate (object state4)
{
Removal?.Invoke(this, EventArgs.Empty);
}), null);