1
0
mirror of https://github.com/DarthAffe/RGB.NET.git synced 2025-12-13 10:08:31 +00:00

Added public UpdateTriggers list to DeviceProviders

This commit is contained in:
Darth Affe 2021-04-24 20:38:30 +02:00
parent 1d57f4e988
commit 41edda99f0
2 changed files with 14 additions and 12 deletions

View File

@ -16,7 +16,9 @@ namespace RGB.NET.Core
public virtual IEnumerable<IRGBDevice> Devices { get; protected set; } = Enumerable.Empty<IRGBDevice>(); public virtual IEnumerable<IRGBDevice> Devices { get; protected set; } = Enumerable.Empty<IRGBDevice>();
protected Dictionary<int, IDeviceUpdateTrigger> UpdateTriggers { get; } = new(); protected Dictionary<int, IDeviceUpdateTrigger> UpdateTriggerMapping { get; } = new();
public ReadOnlyCollection<(int id, IDeviceUpdateTrigger trigger)> UpdateTriggers => new(UpdateTriggerMapping.Select(x => (x.Key, x.Value)).ToList());
#endregion #endregion
@ -49,7 +51,7 @@ namespace RGB.NET.Core
Devices = new ReadOnlyCollection<IRGBDevice>(GetLoadedDevices(loadFilter).ToList()); Devices = new ReadOnlyCollection<IRGBDevice>(GetLoadedDevices(loadFilter).ToList());
foreach (IDeviceUpdateTrigger updateTrigger in UpdateTriggers.Values) foreach (IDeviceUpdateTrigger updateTrigger in UpdateTriggerMapping.Values)
updateTrigger.Start(); updateTrigger.Start();
IsInitialized = true; IsInitialized = true;
@ -81,8 +83,8 @@ namespace RGB.NET.Core
protected virtual IDeviceUpdateTrigger GetUpdateTrigger(int id = -1, double? updateRateHardLimit = null) protected virtual IDeviceUpdateTrigger GetUpdateTrigger(int id = -1, double? updateRateHardLimit = null)
{ {
if (!UpdateTriggers.TryGetValue(id, out IDeviceUpdateTrigger? updaeTrigger)) if (!UpdateTriggerMapping.TryGetValue(id, out IDeviceUpdateTrigger? updaeTrigger))
UpdateTriggers[id] = (updaeTrigger = CreateUpdateTrigger(id, updateRateHardLimit ?? _defaultUpdateRateHardLimit)); UpdateTriggerMapping[id] = (updaeTrigger = CreateUpdateTrigger(id, updateRateHardLimit ?? _defaultUpdateRateHardLimit));
return updaeTrigger; return updaeTrigger;
} }
@ -91,9 +93,12 @@ namespace RGB.NET.Core
protected virtual void Reset() protected virtual void Reset()
{ {
foreach (IDeviceUpdateTrigger updateTrigger in UpdateTriggers.Values) foreach (IDeviceUpdateTrigger updateTrigger in UpdateTriggerMapping.Values)
updateTrigger.Dispose(); updateTrigger.Dispose();
foreach (IRGBDevice device in Devices)
device.Dispose();
Devices = Enumerable.Empty<IRGBDevice>(); Devices = Enumerable.Empty<IRGBDevice>();
IsInitialized = false; IsInitialized = false;
} }
@ -108,13 +113,7 @@ namespace RGB.NET.Core
protected virtual void OnException(Exception ex) => Exception?.Invoke(this, ex); protected virtual void OnException(Exception ex) => Exception?.Invoke(this, ex);
public virtual void Dispose() public virtual void Dispose() => Reset();
{
IEnumerable<IRGBDevice> devices = Devices;
Reset();
foreach (IRGBDevice device in devices)
device.Dispose();
}
#endregion #endregion
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace RGB.NET.Core namespace RGB.NET.Core
{ {
@ -20,6 +21,8 @@ namespace RGB.NET.Core
/// </summary> /// </summary>
IEnumerable<IRGBDevice> Devices { get; } IEnumerable<IRGBDevice> Devices { get; }
ReadOnlyCollection<(int id, IDeviceUpdateTrigger trigger)> UpdateTriggers { get; }
#endregion #endregion
#region Events #region Events