diff --git a/RGB.NET.Devices.Wooting/Generic/WootingRGBDeviceInfo.cs b/RGB.NET.Devices.Wooting/Generic/WootingRGBDeviceInfo.cs
index cea13eb..ec4500d 100644
--- a/RGB.NET.Devices.Wooting/Generic/WootingRGBDeviceInfo.cs
+++ b/RGB.NET.Devices.Wooting/Generic/WootingRGBDeviceInfo.cs
@@ -37,6 +37,8 @@ public class WootingRGBDeviceInfo : IRGBDeviceInfo
///
public WootingLayoutType WootingLayoutType { get; }
+ public byte WootingDeviceIndex { get; }
+
#endregion
#region Constructors
@@ -46,11 +48,12 @@ public class WootingRGBDeviceInfo : IRGBDeviceInfo
///
/// The type of the .
/// The of the .
- internal WootingRGBDeviceInfo(RGBDeviceType deviceType, _WootingDeviceInfo deviceInfo)
+ internal WootingRGBDeviceInfo(RGBDeviceType deviceType, _WootingDeviceInfo deviceInfo, byte deviceIndex)
{
this.DeviceType = deviceType;
this.WootingDeviceType = deviceInfo.DeviceType;
this.WootingLayoutType = deviceInfo.LayoutType;
+ this.WootingDeviceIndex = deviceIndex;
Model = deviceInfo.Model;
DeviceName = DeviceHelper.CreateDeviceName(Manufacturer, Model);
diff --git a/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDevice.cs b/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDevice.cs
index 6e082a4..451c6b2 100644
--- a/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDevice.cs
+++ b/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDevice.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using RGB.NET.Core;
using RGB.NET.Devices.Wooting.Generic;
+using RGB.NET.Devices.Wooting.Native;
namespace RGB.NET.Devices.Wooting.Keyboard;
@@ -48,5 +49,12 @@ public class WootingKeyboardRGBDevice : WootingRGBDevice
protected override void UpdateLeds(IEnumerable ledsToUpdate) => UpdateQueue.SetData(GetUpdateData(ledsToUpdate));
+ public override void Dispose()
+ {
+ _WootingSDK.SelectDevice(DeviceInfo.WootingDeviceIndex);
+ _WootingSDK.Reset();
+
+ base.Dispose();
+ }
#endregion
}
\ No newline at end of file
diff --git a/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDeviceInfo.cs b/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDeviceInfo.cs
index 3e3400e..dfcc8eb 100644
--- a/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDeviceInfo.cs
+++ b/RGB.NET.Devices.Wooting/Keyboard/WootingKeyboardRGBDeviceInfo.cs
@@ -24,8 +24,8 @@ public class WootingKeyboardRGBDeviceInfo : WootingRGBDeviceInfo, IKeyboardDevic
/// Internal constructor of managed .
///
/// The native .
- internal WootingKeyboardRGBDeviceInfo(_WootingDeviceInfo deviceInfo)
- : base(RGBDeviceType.Keyboard, deviceInfo)
+ internal WootingKeyboardRGBDeviceInfo(_WootingDeviceInfo deviceInfo, byte deviceIndex)
+ : base(RGBDeviceType.Keyboard, deviceInfo, deviceIndex)
{
Layout = WootingLayoutType switch
{
diff --git a/RGB.NET.Devices.Wooting/Native/_WootingSDK.cs b/RGB.NET.Devices.Wooting/Native/_WootingSDK.cs
index 885a255..29ce08f 100644
--- a/RGB.NET.Devices.Wooting/Native/_WootingSDK.cs
+++ b/RGB.NET.Devices.Wooting/Native/_WootingSDK.cs
@@ -58,7 +58,6 @@ internal static class _WootingSDK
{
if (_handle == IntPtr.Zero) return;
- Reset();
Close();
_getDeviceInfoPointer = null;
diff --git a/RGB.NET.Devices.Wooting/WootingDeviceProvider.cs b/RGB.NET.Devices.Wooting/WootingDeviceProvider.cs
index c588401..c4f1ce7 100644
--- a/RGB.NET.Devices.Wooting/WootingDeviceProvider.cs
+++ b/RGB.NET.Devices.Wooting/WootingDeviceProvider.cs
@@ -74,7 +74,7 @@ public class WootingDeviceProvider : AbstractRGBDeviceProvider
_WootingSDK.SelectDevice(i);
_WootingDeviceInfo nativeDeviceInfo = (_WootingDeviceInfo)Marshal.PtrToStructure(_WootingSDK.GetDeviceInfo(), typeof(_WootingDeviceInfo))!;
- yield return new WootingKeyboardRGBDevice(new WootingKeyboardRGBDeviceInfo(nativeDeviceInfo), updateQueue);
+ yield return new WootingKeyboardRGBDevice(new WootingKeyboardRGBDeviceInfo(nativeDeviceInfo, i), updateQueue);
}
}
}