1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-12 21:38:38 +00:00

Merge branch 'development' into feature/gh-actions

This commit is contained in:
Robert 2023-03-06 22:03:07 +01:00
commit 5f206436c3
9 changed files with 44 additions and 25 deletions

View File

@ -42,9 +42,9 @@
<PackageReference Include="LiteDB" Version="5.0.12" />
<PackageReference Include="McMaster.NETCore.Plugins" Version="1.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Presets" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.17" />
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.17" />
<PackageReference Include="RGB.NET.Presets" Version="2.0.0-prerelease.17" />
<PackageReference Include="Serilog" Version="2.11.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
<PackageReference Include="Serilog.Sinks.Debug" Version="2.0.0" />

View File

@ -14,7 +14,7 @@ public class ArtemisPluginLockException : Exception
private static string CreateExceptionMessage(Exception? innerException)
{
return innerException != null
? "Found a lock file, skipping load, see inner exception for last known exception."
: "Found a lock file, skipping load.";
? "Found a lock file, skipping automatic load, see inner exception for last known exception. Please manually re-enable the plugin."
: "Found a lock file, skipping automatic load. Please manually re-enable the plugin.";
}
}

View File

@ -1,4 +1,5 @@
using System.ComponentModel;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using Artemis.Core.Properties;
@ -26,7 +27,7 @@ public abstract class CorePropertyChanged : INotifyPropertyChanged
[MethodImpl(MethodImplOptions.AggressiveInlining)]
protected bool RequiresUpdate<T>(ref T storage, T value)
{
return !Equals(storage, value);
return !EqualityComparer<T>.Default.Equals(storage, value);
}
/// <summary>

View File

@ -28,6 +28,8 @@ public abstract class PerLedLayerBrush<T> : PropertiesLayerBrush<T> where T : La
/// <returns>The color the LED will receive</returns>
public abstract SKColor GetColor(ArtemisLed led, SKPoint renderPoint);
private readonly SKPoint[] _points = new SKPoint[2];
internal override void InternalRender(SKCanvas canvas, SKRect bounds, SKPaint paint)
{
// We don't want rotation on this canvas because that'll displace the LEDs, translations are applied to the points of each LED instead
@ -37,25 +39,21 @@ public abstract class PerLedLayerBrush<T> : PropertiesLayerBrush<T> where T : La
using SKPath pointsPath = new();
foreach (ArtemisLed artemisLed in Layer.Leds)
{
pointsPath.AddPoly(new[]
{
new SKPoint(0, 0),
new SKPoint(artemisLed.AbsoluteRectangle.Left - Layer.Bounds.Left, artemisLed.AbsoluteRectangle.Top - Layer.Bounds.Top)
});
_points[0] = new SKPoint(0, 0);
_points[1] = new SKPoint(artemisLed.AbsoluteRectangle.Left - Layer.Bounds.Left, artemisLed.AbsoluteRectangle.Top - Layer.Bounds.Top);
pointsPath.AddPoly(_points);
}
// Apply the translation to the points of each LED instead
if (Layer.General.TransformMode.CurrentValue == LayerTransformMode.Normal && SupportsTransformation)
pointsPath.Transform(Layer.GetTransformMatrix(true, true, true, true).Invert());
SKPoint[] points = pointsPath.Points;
TryOrBreak(() =>
{
for (int index = 0; index < Layer.Leds.Count; index++)
{
ArtemisLed artemisLed = Layer.Leds[index];
SKPoint renderPoint = points[index * 2 + 1];
SKPoint renderPoint = pointsPath.GetPoint(index * 2 + 1);
if (!float.IsFinite(renderPoint.X) || !float.IsFinite(renderPoint.Y))
continue;

View File

@ -10,12 +10,25 @@ namespace Artemis.Core;
/// </summary>
public static class LogStore
{
private static readonly object _lock = new();
private static readonly LinkedList<LogEvent> LinkedList = new();
/// <summary>
/// Gets a list containing the last 500 log events.
/// </summary>
public static List<LogEvent> Events => LinkedList.ToList();
public static List<LogEvent> Events
{
get
{
List<LogEvent> events;
lock (_lock)
events = LinkedList.ToList();
return events;
}
}
/// <summary>
/// Occurs when a new <see cref="LogEvent" /> was received.
@ -24,9 +37,13 @@ public static class LogStore
internal static void Emit(LogEvent logEvent)
{
LinkedList.AddLast(logEvent);
while (LinkedList.Count > 500)
LinkedList.RemoveFirst();
lock (_lock)
{
LinkedList.AddLast(logEvent);
while (LinkedList.Count > 500)
LinkedList.RemoveFirst();
}
OnEventAdded(new LogEventEventArgs(logEvent));
}

View File

@ -20,7 +20,7 @@
<PackageReference Include="Material.Icons.Avalonia" Version="1.1.10" />
<PackageReference Include="ReactiveUI" Version="17.1.50" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.17" />
<PackageReference Include="SkiaSharp" Version="2.88.1-preview.108" />
</ItemGroup>
<ItemGroup>

View File

@ -34,8 +34,8 @@
<PackageReference Include="Octopus.Octodiff" Version="2.0.100" />
<PackageReference Include="ReactiveUI" Version="17.1.50" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.12" />
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.17" />
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.17" />
<PackageReference Include="SkiaSharp" Version="2.88.1-preview.108" />
<PackageReference Include="Splat.DryIoc" Version="14.6.1" />
</ItemGroup>

View File

@ -48,8 +48,11 @@ public class LogsDebugViewModel : ActivatableViewModelBase
});
}
private void AddLogEvent(LogEvent logEvent)
private void AddLogEvent(LogEvent? logEvent)
{
if (logEvent is null)
return;
using StringWriter writer = new();
_formatter.Format(logEvent, writer);
string line = writer.ToString();
@ -60,7 +63,7 @@ public class LogsDebugViewModel : ActivatableViewModelBase
private void RemoveOldestLine()
{
int firstNewLine = Document.Text.IndexOf('\n');
int firstNewLine = Document.IndexOf('\n', 0, Document.TextLength);
if (firstNewLine == -1)
{
//this should never happen.

View File

@ -53,7 +53,7 @@ public class StartupWizardViewModel : DialogViewModelBase<bool>
DeviceProviders = new ObservableCollection<PluginViewModel>(pluginManagementService.GetAllPlugins()
.Where(p => p.Info.IsCompatible && p.Features.Any(f => f.AlwaysEnabled && f.FeatureType.IsAssignableTo(typeof(DeviceProvider))))
.OrderBy(p => p.Info.Name)
.Select(p => settingsVmFactory.PluginViewModel(p, null)));
.Select(p => settingsVmFactory.PluginViewModel(p, ReactiveCommand.Create(() => new Unit()))));
CurrentStep = 1;
SetupButtons();