From 9e7ddfc51ce9c7102a0c41d9f2de0c21a2feef66 Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Thu, 15 Dec 2016 11:12:35 +0100 Subject: [PATCH] Fix for #225 and the crashes in #224 --- .../Profiles/Layers/Types/KeyPress/KeyPressType.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs index 0bed586e0..7053dae48 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs +++ b/Artemis/Artemis/Profiles/Layers/Types/KeyPress/KeyPressType.cs @@ -20,12 +20,14 @@ namespace Artemis.Profiles.Layers.Types.KeyPress internal class KeyPressType : ILayerType { private readonly DeviceManager _deviceManager; - private List _keyPressLayers = new List(); + private List _keyPressLayers; private LayerModel _layerModel; public KeyPressType(DeviceManager deviceManager) { _deviceManager = deviceManager; + _keyPressLayers = new List(); + KeyboardHook.KeyDownCallback += KeyboardHookOnKeyDownCallback; } @@ -77,10 +79,12 @@ namespace Artemis.Profiles.Layers.Types.KeyPress lock (_keyPressLayers) { // Remove expired key presses - _keyPressLayers = _keyPressLayers.Where(k => !k.LayerAnimation.MustExpire(k)).ToList(); + var updateLayers = _keyPressLayers.Where(k => !k.LayerAnimation.MustExpire(k)).ToList(); // Update the ones that are still active - foreach (var keyPressLayer in _keyPressLayers) - keyPressLayer.Update(null, false, true); + foreach (var updateLayer in updateLayers) + updateLayer.Update(null, false, true); + + _keyPressLayers = updateLayers; } }