Merge pull request #109 from SpoinkyNL/issue93

Issue93
This commit is contained in:
Robert Beekman authored and GitHub committed 2016-06-13 11:52:17 +02:00
commit 25d396ce88
1 file changed
+31 -4
+31 -4
View File
@@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using Artemis.DeviceProviders; using Artemis.DeviceProviders;
using Artemis.Events; using Artemis.Events;
using Artemis.Services; using Artemis.Services;
@@ -93,10 +94,31 @@ namespace Artemis.Managers
if (!wasNull) if (!wasNull)
ReleaseActiveKeyboard(); ReleaseActiveKeyboard();
var asynchEnable = false;
// Disable everything if there's no active keyboard found if (keyboardProvider.CanEnable())
if (!keyboardProvider.CanEnable())
{ {
FinishEnableKeyboard(keyboardProvider, oldKeyboard);
}
else
{
for (var i = 1; i <= 10; i++)
{
var thread = new Thread(() =>
{
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;
}
if (!asynchEnable)
{
// Disable everything if there's no active keyboard found
DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText);
ActiveKeyboard = null; ActiveKeyboard = null;
General.Default.LastKeyboard = null; General.Default.LastKeyboard = null;
@@ -105,7 +127,13 @@ namespace Artemis.Managers
ChangingKeyboard = false; ChangingKeyboard = false;
return; return;
} }
FinishEnableKeyboard(keyboardProvider, oldKeyboard);
}
}
}
private void FinishEnableKeyboard(KeyboardProvider keyboardProvider, KeyboardProvider oldKeyboard)
{
ActiveKeyboard = keyboardProvider; ActiveKeyboard = keyboardProvider;
ActiveKeyboard.Enable(); ActiveKeyboard.Enable();
@@ -118,7 +146,6 @@ namespace Artemis.Managers
_events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard)); _events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
_logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name); _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);
} }
}
private void EnableUsableDevices() private void EnableUsableDevices()
{ {