From 975de1ea21642fbc5b5978efc8eb597142083419 Mon Sep 17 00:00:00 2001 From: Ted Date: Sun, 5 Jun 2016 14:59:50 -0700 Subject: [PATCH 1/8] First attempt at fix for isasue 93. 10 attempts to reconnect, 500 MS between each. --- Artemis/Artemis/Managers/DeviceManager.cs | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 88f9637b6..3a9cfe5a2 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Artemis.DeviceProviders; using Artemis.Events; using Artemis.Services; @@ -93,33 +94,59 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - - // Disable everything if there's no active keyboard found - if (!keyboardProvider.CanEnable()) + bool asynchEnable = false; + if (keyboardProvider.CanEnable()) { - DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); - ActiveKeyboard = null; - General.Default.LastKeyboard = null; - General.Default.Save(); - _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); - ChangingKeyboard = false; - return; + FinishEnableKeyboard(keyboardProvider, oldKeyboard); } + else + { + for (int i = 1; i <= 10; i++) + { + var thread = new Thread( + () => + { + Thread.Sleep(500); + asynchEnable = keyboardProvider.CanEnable(); + }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); + if (asynchEnable) + break; + } - ActiveKeyboard = keyboardProvider; - ActiveKeyboard.Enable(); - - General.Default.LastKeyboard = ActiveKeyboard.Name; - General.Default.Save(); - - EnableUsableDevices(); - - ChangingKeyboard = false; - _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); - _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + if (!asynchEnable) + { + // Disable everything if there's no active keyboard found + DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + ActiveKeyboard = null; + General.Default.LastKeyboard = null; + General.Default.Save(); + _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); + ChangingKeyboard = false; + return; + } + FinishEnableKeyboard(keyboardProvider, oldKeyboard); + } + } } + private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard) + { + ActiveKeyboard = keyboardProvider; + ActiveKeyboard.Enable(); + + General.Default.LastKeyboard = ActiveKeyboard.Name; + General.Default.Save(); + + EnableUsableDevices(); + + ChangingKeyboard = false; + _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); + _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + } + private void EnableUsableDevices() { foreach (var mouseProvider in MiceProviders) From 29033e942c5c601949b0cfe32e27cef49558f8b8 Mon Sep 17 00:00:00 2001 From: Ted Date: Sun, 5 Jun 2016 14:59:50 -0700 Subject: [PATCH 2/8] First attempt at fix for isasue 93. 10 attempts to reconnect, 500 MS between each. --- Artemis/Artemis/Managers/DeviceManager.cs | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 88f9637b6..3a9cfe5a2 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Artemis.DeviceProviders; using Artemis.Events; using Artemis.Services; @@ -93,33 +94,59 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - - // Disable everything if there's no active keyboard found - if (!keyboardProvider.CanEnable()) + bool asynchEnable = false; + if (keyboardProvider.CanEnable()) { - DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); - ActiveKeyboard = null; - General.Default.LastKeyboard = null; - General.Default.Save(); - _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); - ChangingKeyboard = false; - return; + FinishEnableKeyboard(keyboardProvider, oldKeyboard); } + else + { + for (int i = 1; i <= 10; i++) + { + var thread = new Thread( + () => + { + Thread.Sleep(500); + asynchEnable = keyboardProvider.CanEnable(); + }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); + if (asynchEnable) + break; + } - ActiveKeyboard = keyboardProvider; - ActiveKeyboard.Enable(); - - General.Default.LastKeyboard = ActiveKeyboard.Name; - General.Default.Save(); - - EnableUsableDevices(); - - ChangingKeyboard = false; - _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); - _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + if (!asynchEnable) + { + // Disable everything if there's no active keyboard found + DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + ActiveKeyboard = null; + General.Default.LastKeyboard = null; + General.Default.Save(); + _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); + ChangingKeyboard = false; + return; + } + FinishEnableKeyboard(keyboardProvider, oldKeyboard); + } + } } + private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard) + { + ActiveKeyboard = keyboardProvider; + ActiveKeyboard.Enable(); + + General.Default.LastKeyboard = ActiveKeyboard.Name; + General.Default.Save(); + + EnableUsableDevices(); + + ChangingKeyboard = false; + _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); + _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + } + private void EnableUsableDevices() { foreach (var mouseProvider in MiceProviders) From b034553bd753ffbe6c133674ea93c338ca92bb36 Mon Sep 17 00:00:00 2001 From: Ted Date: Sun, 5 Jun 2016 14:59:50 -0700 Subject: [PATCH 3/8] First attempt at fix for isasue 93. 10 attempts to reconnect, 500 MS between each. --- Artemis/Artemis/Managers/DeviceManager.cs | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 88f9637b6..3a9cfe5a2 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Artemis.DeviceProviders; using Artemis.Events; using Artemis.Services; @@ -93,33 +94,59 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - - // Disable everything if there's no active keyboard found - if (!keyboardProvider.CanEnable()) + bool asynchEnable = false; + if (keyboardProvider.CanEnable()) { - DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); - ActiveKeyboard = null; - General.Default.LastKeyboard = null; - General.Default.Save(); - _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); - ChangingKeyboard = false; - return; + FinishEnableKeyboard(keyboardProvider, oldKeyboard); } + else + { + for (int i = 1; i <= 10; i++) + { + var thread = new Thread( + () => + { + Thread.Sleep(500); + asynchEnable = keyboardProvider.CanEnable(); + }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); + if (asynchEnable) + break; + } - ActiveKeyboard = keyboardProvider; - ActiveKeyboard.Enable(); - - General.Default.LastKeyboard = ActiveKeyboard.Name; - General.Default.Save(); - - EnableUsableDevices(); - - ChangingKeyboard = false; - _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); - _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + if (!asynchEnable) + { + // Disable everything if there's no active keyboard found + DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + ActiveKeyboard = null; + General.Default.LastKeyboard = null; + General.Default.Save(); + _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); + ChangingKeyboard = false; + return; + } + FinishEnableKeyboard(keyboardProvider, oldKeyboard); + } + } } + private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard) + { + ActiveKeyboard = keyboardProvider; + ActiveKeyboard.Enable(); + + General.Default.LastKeyboard = ActiveKeyboard.Name; + General.Default.Save(); + + EnableUsableDevices(); + + ChangingKeyboard = false; + _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); + _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + } + private void EnableUsableDevices() { foreach (var mouseProvider in MiceProviders) From fdd17739ef289b2a3da7935ab162f286030a68bf Mon Sep 17 00:00:00 2001 From: Ted Date: Sun, 5 Jun 2016 14:59:50 -0700 Subject: [PATCH 4/8] First attempt at fix for isasue 93. 10 attempts to reconnect, 500 MS between each. --- Artemis/Artemis/Managers/DeviceManager.cs | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 88f9637b6..3a9cfe5a2 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Artemis.DeviceProviders; using Artemis.Events; using Artemis.Services; @@ -93,33 +94,59 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - - // Disable everything if there's no active keyboard found - if (!keyboardProvider.CanEnable()) + bool asynchEnable = false; + if (keyboardProvider.CanEnable()) { - DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); - ActiveKeyboard = null; - General.Default.LastKeyboard = null; - General.Default.Save(); - _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); - ChangingKeyboard = false; - return; + FinishEnableKeyboard(keyboardProvider, oldKeyboard); } + else + { + for (int i = 1; i <= 10; i++) + { + var thread = new Thread( + () => + { + Thread.Sleep(500); + asynchEnable = keyboardProvider.CanEnable(); + }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); + if (asynchEnable) + break; + } - ActiveKeyboard = keyboardProvider; - ActiveKeyboard.Enable(); - - General.Default.LastKeyboard = ActiveKeyboard.Name; - General.Default.Save(); - - EnableUsableDevices(); - - ChangingKeyboard = false; - _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); - _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + if (!asynchEnable) + { + // Disable everything if there's no active keyboard found + DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + ActiveKeyboard = null; + General.Default.LastKeyboard = null; + General.Default.Save(); + _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); + ChangingKeyboard = false; + return; + } + FinishEnableKeyboard(keyboardProvider, oldKeyboard); + } + } } + private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard) + { + ActiveKeyboard = keyboardProvider; + ActiveKeyboard.Enable(); + + General.Default.LastKeyboard = ActiveKeyboard.Name; + General.Default.Save(); + + EnableUsableDevices(); + + ChangingKeyboard = false; + _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); + _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + } + private void EnableUsableDevices() { foreach (var mouseProvider in MiceProviders) From f1f7851e121f7312504e7ebee6d53ec9dfc2e040 Mon Sep 17 00:00:00 2001 From: Thoth2020 Date: Sun, 12 Jun 2016 15:10:02 -0700 Subject: [PATCH 5/8] Update DeviceManager.cs Attempt #2 at Issue 93 fix --- Artemis/Artemis/Managers/DeviceManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 3a9cfe5a2..0ccf65536 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -106,7 +106,7 @@ namespace Artemis.Managers var thread = new Thread( () => { - Thread.Sleep(500); + Thread.Sleep(500 * i); asynchEnable = keyboardProvider.CanEnable(); }); _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); @@ -184,4 +184,4 @@ namespace Artemis.Managers } } } -} \ No newline at end of file +} From d92970913bf406253843f86bbd81287bf22436db Mon Sep 17 00:00:00 2001 From: Ted Date: Sun, 5 Jun 2016 14:59:50 -0700 Subject: [PATCH 6/8] First attempt at fix for isasue 93. 10 attempts to reconnect, 500 MS between each. --- Artemis/Artemis/Managers/DeviceManager.cs | 69 ++++++++++++++++------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 88f9637b6..3a9cfe5a2 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using Artemis.DeviceProviders; using Artemis.Events; using Artemis.Services; @@ -93,33 +94,59 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - - // Disable everything if there's no active keyboard found - if (!keyboardProvider.CanEnable()) + bool asynchEnable = false; + if (keyboardProvider.CanEnable()) { - DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); - ActiveKeyboard = null; - General.Default.LastKeyboard = null; - General.Default.Save(); - _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); - ChangingKeyboard = false; - return; + FinishEnableKeyboard(keyboardProvider, oldKeyboard); } + else + { + for (int i = 1; i <= 10; i++) + { + var thread = new Thread( + () => + { + Thread.Sleep(500); + asynchEnable = keyboardProvider.CanEnable(); + }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); + if (asynchEnable) + break; + } - ActiveKeyboard = keyboardProvider; - ActiveKeyboard.Enable(); - - General.Default.LastKeyboard = ActiveKeyboard.Name; - General.Default.Save(); - - EnableUsableDevices(); - - ChangingKeyboard = false; - _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); - _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + if (!asynchEnable) + { + // Disable everything if there's no active keyboard found + DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + ActiveKeyboard = null; + General.Default.LastKeyboard = null; + General.Default.Save(); + _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); + ChangingKeyboard = false; + return; + } + FinishEnableKeyboard(keyboardProvider, oldKeyboard); + } + } } + private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard) + { + ActiveKeyboard = keyboardProvider; + ActiveKeyboard.Enable(); + + General.Default.LastKeyboard = ActiveKeyboard.Name; + General.Default.Save(); + + EnableUsableDevices(); + + ChangingKeyboard = false; + _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); + _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); + } + private void EnableUsableDevices() { foreach (var mouseProvider in MiceProviders) From 88dd1cf9d0da6393f444f6e38744840c8c930319 Mon Sep 17 00:00:00 2001 From: Thoth2020 Date: Sun, 12 Jun 2016 15:10:02 -0700 Subject: [PATCH 7/8] Update DeviceManager.cs Attempt #2 at Issue 93 fix --- Artemis/Artemis/Managers/DeviceManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 3a9cfe5a2..0ccf65536 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -106,7 +106,7 @@ namespace Artemis.Managers var thread = new Thread( () => { - Thread.Sleep(500); + Thread.Sleep(500 * i); asynchEnable = keyboardProvider.CanEnable(); }); _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); @@ -184,4 +184,4 @@ namespace Artemis.Managers } } } -} \ No newline at end of file +} From bfd31d4cdf2bcab84d6b6bd9020f9a4e0ee4027c Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Mon, 13 Jun 2016 11:50:46 +0200 Subject: [PATCH 8/8] Formatting --- Artemis/Artemis/Managers/DeviceManager.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Artemis/Artemis/Managers/DeviceManager.cs b/Artemis/Artemis/Managers/DeviceManager.cs index 0ccf65536..64c922764 100644 --- a/Artemis/Artemis/Managers/DeviceManager.cs +++ b/Artemis/Artemis/Managers/DeviceManager.cs @@ -94,22 +94,23 @@ namespace Artemis.Managers if (!wasNull) ReleaseActiveKeyboard(); - bool asynchEnable = false; + var asynchEnable = false; if (keyboardProvider.CanEnable()) { FinishEnableKeyboard(keyboardProvider, oldKeyboard); } else { - for (int i = 1; i <= 10; i++) + for (var i = 1; i <= 10; i++) { - var thread = new Thread( - () => + var thread = new Thread(() => { - Thread.Sleep(500 * i); + Thread.Sleep(500*i); asynchEnable = keyboardProvider.CanEnable(); }); + _logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i); + thread.Start(); if (asynchEnable) break; @@ -125,10 +126,9 @@ namespace Artemis.Managers _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name); ChangingKeyboard = false; return; - } + } FinishEnableKeyboard(keyboardProvider, oldKeyboard); } - } } @@ -184,4 +184,4 @@ namespace Artemis.Managers } } } -} +} \ No newline at end of file