mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
commit
25d396ce88
1 file changed
+46
-19
@@ -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,33 +94,59 @@ 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())
|
|
||||||
{
|
{
|
||||||
DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText);
|
FinishEnableKeyboard(keyboardProvider, oldKeyboard);
|
||||||
ActiveKeyboard = null;
|
|
||||||
General.Default.LastKeyboard = null;
|
|
||||||
General.Default.Save();
|
|
||||||
_logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name);
|
|
||||||
ChangingKeyboard = false;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (var i = 1; i <= 10; i++)
|
||||||
|
{
|
||||||
|
var thread = new Thread(() =>
|
||||||
|
{
|
||||||
|
Thread.Sleep(500*i);
|
||||||
|
asynchEnable = keyboardProvider.CanEnable();
|
||||||
|
});
|
||||||
|
|
||||||
ActiveKeyboard = keyboardProvider;
|
_logger.Warn("Failed enabling keyboard: {0}, re-attempt {1} of 10", keyboardProvider.Name, i);
|
||||||
ActiveKeyboard.Enable();
|
|
||||||
|
|
||||||
General.Default.LastKeyboard = ActiveKeyboard.Name;
|
thread.Start();
|
||||||
General.Default.Save();
|
if (asynchEnable)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
EnableUsableDevices();
|
if (!asynchEnable)
|
||||||
|
{
|
||||||
ChangingKeyboard = false;
|
// Disable everything if there's no active keyboard found
|
||||||
_events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
|
DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText);
|
||||||
_logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);
|
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()
|
private void EnableUsableDevices()
|
||||||
{
|
{
|
||||||
foreach (var mouseProvider in MiceProviders)
|
foreach (var mouseProvider in MiceProviders)
|
||||||
|
|||||||
Reference in new issue
Block a user