1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Core - Added better way to flush LEDs

UI - Fixed a freeze when opening the device properties window of a device
Core - Updated RGB.NET sampler call for API changes
This commit is contained in:
Robert 2021-08-13 22:04:26 +02:00
parent 9179010e12
commit aace06b6cc
5 changed files with 57 additions and 34 deletions

View File

@ -107,7 +107,7 @@ namespace Artemis.Core
GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer); GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer);
Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL]; Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL];
Sampler.SampleColor(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData); Sampler.Sample(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData);
return GetColor(pixelData); return GetColor(pixelData);
} }
@ -119,7 +119,7 @@ namespace Artemis.Core
GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer); GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer);
Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL]; Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL];
Sampler.SampleColor(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData); Sampler.Sample(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData);
ArrayPool<byte>.Shared.Return(rent); ArrayPool<byte>.Shared.Return(rent);

View File

@ -13,7 +13,6 @@ using RGB.NET.Core;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
using SkiaSharp; using SkiaSharp;
using Module = Artemis.Core.Modules.Module;
namespace Artemis.Core.Services namespace Artemis.Core.Services
{ {
@ -107,6 +106,13 @@ namespace Artemis.Core.Services
if (_rgbService.IsRenderPaused) if (_rgbService.IsRenderPaused)
return; return;
if (_rgbService.FlushLeds)
{
_rgbService.FlushLeds = false;
_rgbService.Surface.Update(true);
return;
}
try try
{ {
_frameStopWatch.Restart(); _frameStopWatch.Restart();

View File

@ -41,6 +41,11 @@ namespace Artemis.Core.Services
/// </summary> /// </summary>
bool RenderOpen { get; } bool RenderOpen { get; }
/// <summary>
/// Gets or sets a boolean indicating whether to flush the RGB.NET LEDs during next update
/// </summary>
bool FlushLeds { get; set; }
/// <summary> /// <summary>
/// Opens the render pipeline /// Opens the render pipeline
/// </summary> /// </summary>

View File

@ -137,8 +137,14 @@ namespace Artemis.Core.Services
public bool IsRenderPaused { get; set; } public bool IsRenderPaused { get; set; }
public bool RenderOpen { get; private set; } public bool RenderOpen { get; private set; }
/// <inheritdoc />
public bool FlushLeds { get; set; }
public void AddDeviceProvider(IRGBDeviceProvider deviceProvider) public void AddDeviceProvider(IRGBDeviceProvider deviceProvider)
{ {
if (RenderOpen)
throw new ArtemisCoreException("Cannot add a device provider while rendering");
lock (_devices) lock (_devices)
{ {
try try
@ -199,6 +205,9 @@ namespace Artemis.Core.Services
public void RemoveDeviceProvider(IRGBDeviceProvider deviceProvider) public void RemoveDeviceProvider(IRGBDeviceProvider deviceProvider)
{ {
if (RenderOpen)
throw new ArtemisCoreException("Cannot update the remove device provider while rendering");
lock (_devices) lock (_devices)
{ {
try try
@ -267,6 +276,8 @@ namespace Artemis.Core.Services
if (RenderOpen) if (RenderOpen)
throw new ArtemisCoreException("Cannot update the texture while rendering"); throw new ArtemisCoreException("Cannot update the texture while rendering");
lock (_devices)
{
IManagedGraphicsContext? graphicsContext = Constants.ManagedGraphicsContext = _newGraphicsContext; IManagedGraphicsContext? graphicsContext = Constants.ManagedGraphicsContext = _newGraphicsContext;
if (!ReferenceEquals(graphicsContext, _newGraphicsContext)) if (!ReferenceEquals(graphicsContext, _newGraphicsContext))
graphicsContext = _newGraphicsContext; graphicsContext = _newGraphicsContext;
@ -299,6 +310,7 @@ namespace Artemis.Core.Services
_newGraphicsContext = null; _newGraphicsContext = null;
} }
} }
}
public void UpdateGraphicsContext(IManagedGraphicsContext? managedGraphicsContext) public void UpdateGraphicsContext(IManagedGraphicsContext? managedGraphicsContext)
{ {

View File

@ -140,7 +140,7 @@ namespace Artemis.UI.Screens.Settings.Device.Tabs
Device.GreenScale = GreenScale / 100f; Device.GreenScale = GreenScale / 100f;
Device.BlueScale = BlueScale / 100f; Device.BlueScale = BlueScale / 100f;
_rgbService.Surface.Update(true); _rgbService.FlushLeds = true;
} }
public void BrowseCustomLayout(object sender, MouseEventArgs e) public void BrowseCustomLayout(object sender, MouseEventArgs e)