mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
I'm bad at Git.
This commit is contained in:
parent
5bbb6803b5
commit
f0a73ed6c3
@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Artemis.DeviceProviders;
|
||||
using Artemis.Events;
|
||||
@ -67,37 +66,20 @@ namespace Artemis.Managers
|
||||
/// <param name="keyboardProvider"></param>
|
||||
public async void EnableKeyboard(KeyboardProvider keyboardProvider)
|
||||
{
|
||||
if (ChangingKeyboard)
|
||||
if (keyboardProvider == null)
|
||||
throw new ArgumentNullException(nameof(keyboardProvider));
|
||||
|
||||
if (ChangingKeyboard || ActiveKeyboard?.Name == keyboardProvider.Name)
|
||||
return;
|
||||
|
||||
_logger.Debug("Trying to enable keyboard: {0}", keyboardProvider.Name);
|
||||
ChangingKeyboard = true;
|
||||
|
||||
// Store the old keyboard so it can be used in the event we're raising later
|
||||
var oldKeyboard = ActiveKeyboard;
|
||||
|
||||
lock (this)
|
||||
{
|
||||
ChangingKeyboard = true;
|
||||
|
||||
if (keyboardProvider == null)
|
||||
throw new ArgumentNullException(nameof(keyboardProvider));
|
||||
|
||||
if (ActiveKeyboard?.Name == keyboardProvider.Name)
|
||||
{
|
||||
ChangingKeyboard = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var wasNull = false;
|
||||
if (ActiveKeyboard == null)
|
||||
{
|
||||
wasNull = true;
|
||||
ActiveKeyboard = keyboardProvider;
|
||||
}
|
||||
|
||||
if (!wasNull)
|
||||
// Release the current keyboard
|
||||
ReleaseActiveKeyboard();
|
||||
}
|
||||
|
||||
_logger.Debug("Enabling keyboard: {0}", keyboardProvider.Name);
|
||||
|
||||
// Create a dialog to let the user know Artemis hasn't frozen
|
||||
ProgressDialogController dialog = null;
|
||||
@ -127,14 +109,16 @@ namespace Artemis.Managers
|
||||
}
|
||||
|
||||
dialog?.SetMessage($"Enabling keyboard: {keyboardProvider.Name}...");
|
||||
|
||||
// Setup the new keyboard
|
||||
ActiveKeyboard = keyboardProvider;
|
||||
await ActiveKeyboard.EnableAsync(dialog);
|
||||
EnableUsableDevices();
|
||||
|
||||
General.Default.LastKeyboard = ActiveKeyboard.Name;
|
||||
General.Default.Save();
|
||||
|
||||
EnableUsableDevices();
|
||||
_events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
|
||||
await _events.PublishOnUIThreadAsync(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
|
||||
_logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);
|
||||
|
||||
if (dialog != null)
|
||||
|
||||
@ -3,6 +3,8 @@ using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using Artemis.Events;
|
||||
using Caliburn.Micro;
|
||||
using Ninject.Extensions.Logging;
|
||||
using Brush = System.Windows.Media.Brush;
|
||||
|
||||
@ -11,7 +13,7 @@ namespace Artemis.Managers
|
||||
/// <summary>
|
||||
/// Manages the main programn loop
|
||||
/// </summary>
|
||||
public class LoopManager : IDisposable
|
||||
public class LoopManager : IDisposable, IHandle<ActiveKeyboardChanged>, IHandle<ActiveEffectChanged>
|
||||
{
|
||||
private readonly DeviceManager _deviceManager;
|
||||
private readonly EffectManager _effectManager;
|
||||
@ -19,8 +21,9 @@ namespace Artemis.Managers
|
||||
private readonly Timer _loopTimer;
|
||||
private Bitmap _keyboardBitmap;
|
||||
|
||||
public LoopManager(ILogger logger, EffectManager effectManager, DeviceManager deviceManager)
|
||||
public LoopManager(IEventAggregator events, ILogger logger, EffectManager effectManager, DeviceManager deviceManager)
|
||||
{
|
||||
events.Subscribe(this);
|
||||
_logger = logger;
|
||||
_effectManager = effectManager;
|
||||
_deviceManager = deviceManager;
|
||||
@ -77,9 +80,6 @@ namespace Artemis.Managers
|
||||
_effectManager.ChangeEffect(lastEffect);
|
||||
}
|
||||
|
||||
// I assume that it's safe to use ActiveKeyboard and ActifeEffect here since both is checked above
|
||||
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
||||
|
||||
Running = true;
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ namespace Artemis.Managers
|
||||
}
|
||||
var renderEffect = _effectManager.ActiveEffect;
|
||||
|
||||
if (_deviceManager.ChangingKeyboard)
|
||||
if (_deviceManager.ChangingKeyboard || _keyboardBitmap == null)
|
||||
return;
|
||||
|
||||
// Stop if no active keyboard
|
||||
@ -165,5 +165,17 @@ namespace Artemis.Managers
|
||||
_deviceManager.ActiveKeyboard?.DrawBitmap(_keyboardBitmap);
|
||||
}
|
||||
}
|
||||
|
||||
public void Handle(ActiveKeyboardChanged message)
|
||||
{
|
||||
if (_deviceManager.ActiveKeyboard != null &&_effectManager.ActiveEffect != null)
|
||||
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
||||
}
|
||||
|
||||
public void Handle(ActiveEffectChanged message)
|
||||
{
|
||||
if (_deviceManager.ActiveKeyboard != null && _effectManager.ActiveEffect != null)
|
||||
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user