Skip to content

Commit 6d03691

Browse files
committed
fix solid fill layer
reduce LoadDefaultDevice calls at startup
1 parent 0459a8a commit 6d03691

9 files changed

Lines changed: 243 additions & 49 deletions

File tree

Project-Aurora/ColorBox/ColorBox.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,13 @@
4141
<Content Include="LICENSE.txt" />
4242
</ItemGroup>
4343

44+
<ItemGroup>
45+
<PackageReference Include="Lombok.NET">
46+
<Version>1.2.0</Version>
47+
</PackageReference>
48+
<PackageReference Include="Microsoft.CodeAnalysis.Common">
49+
<Version>4.1.0</Version>
50+
</PackageReference>
51+
</ItemGroup>
52+
4453
</Project>

Project-Aurora/Plugin-Example/Plugin-Example.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
</ItemGroup>
2626

2727
<ItemGroup>
28+
<PackageReference Include="Microsoft.CodeAnalysis.Common">
29+
<Version>4.1.0</Version>
30+
</PackageReference>
31+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp">
32+
<Version>4.1.0</Version>
33+
</PackageReference>
2834
<PackageReference Include="Xceed.Wpf.Toolkit">
2935
<Version>2.9.15603.14400</Version>
3036
</PackageReference>

Project-Aurora/Project-Aurora/EffectsEngine/EffectLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class EffectLayer : IDisposable
2424
private float _opacity = 1;
2525

2626
private TextureBrush _textureBrush;
27-
private bool _needsRender;
27+
private bool _needsRender = true;
2828

2929
internal Rectangle Dimension;
3030

Project-Aurora/Project-Aurora/EffectsEngine/Effects.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public class Effects
177177

178178
// ReSharper disable once EventNeverSubscribedTo.Global
179179
public static event EventHandler<CanvasChangedArgs> CanvasChanged;
180-
public static object CanvasChangedLock = new();
180+
public static readonly object CanvasChangedLock = new();
181181

182182
private static int _canvasWidth = 1;
183183
public static int CanvasWidth
@@ -227,7 +227,7 @@ private set
227227
private readonly Dictionary<DeviceKeys, Color> _keyColors = new(MaxDeviceId, EnumHashGetter.Instance as IEqualityComparer<DeviceKeys>);
228228

229229
private readonly Lazy<EffectLayer> _effectLayerFactory = new(() => new EffectLayer("Global Background", Color.Black));
230-
private EffectLayer _background => _effectLayerFactory.Value;
230+
private EffectLayer Background => _effectLayerFactory.Value;
231231

232232
public Effects()
233233
{
@@ -267,51 +267,51 @@ public void SetBitmapping(Dictionary<DeviceKeys, BitmapRectangle> bitmap_map)
267267
private readonly SolidBrush _blackBrush = new(Color.Black);
268268
public void PushFrame(EffectFrame frame)
269269
{
270-
_background.Fill(_blackBrush);
270+
Background.Fill(_blackBrush);
271271

272272
var overLayersArray = frame.GetOverlayLayers();
273273
var layersArray = frame.GetLayers();
274274

275275
foreach (var layer in layersArray)
276-
_background.Add(layer);
276+
Background.Add(layer);
277277
foreach (var layer in overLayersArray)
278-
_background.Add(layer);
278+
Background.Add(layer);
279279

280280
//Apply Brightness
281281
foreach (var key in PossiblePeripheralKeys)
282282
{
283-
_peripheralColors[key] = _background.Get(key);
283+
_peripheralColors[key] = Background.Get(key);
284284
}
285285

286286
var keyboardDarkness = 1.0f - Global.Configuration.KeyboardBrightness * Global.Configuration.GlobalBrightness;
287287
_keyboardDarknessBrush.Color = Color.FromArgb((int) (255.0f * keyboardDarkness), Color.Black);
288-
_background.FillOver(_keyboardDarknessBrush);
288+
Background.FillOver(_keyboardDarknessBrush);
289289

290290
var peripheralDarkness = 1.0f - Global.Configuration.PeripheralBrightness * Global.Configuration.GlobalBrightness;
291-
lock (_background.GetBitmap())
291+
lock (Background.GetBitmap())
292292
foreach (var key in PossiblePeripheralKeys)
293-
_background.Set(key, Utils.ColorUtils.BlendColors(_peripheralColors[key], Color.Black, peripheralDarkness));
293+
Background.Set(key, Utils.ColorUtils.BlendColors(_peripheralColors[key], Color.Black, peripheralDarkness));
294294

295295

296296
if (_forcedFrame != null)
297297
{
298-
using var g = _background.GetGraphics();
298+
using var g = Background.GetGraphics();
299299
g.Clear(Color.Black);
300300
g.DrawImage(_forcedFrame, 0, 0, CanvasWidth, CanvasHeight);
301301
}
302302

303303
var allKeys = _bitmapMap.Keys.ToArray();
304304

305305
foreach (var key in allKeys)
306-
_keyColors[key] = _background.Get(key);
306+
_keyColors[key] = Background.Get(key);
307307

308308
var dcc = new DeviceColorComposition
309309
{
310310
KeyColors = _keyColors,
311311
};
312312
Global.dev_manager.UpdateDevices(dcc);
313313

314-
NewLayerRender?.Invoke(_background.GetBitmap());
314+
NewLayerRender?.Invoke(Background.GetBitmap());
315315

316316
frame.Dispose();
317317
}

Project-Aurora/Project-Aurora/Project-Aurora.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@
8080
<PackageReference Include="IronPython" Version="2.7.12" />
8181
<PackageReference Include="JsonSubTypes" Version="1.9.0" />
8282
<PackageReference Include="LibreHardwareMonitorLib" Version="0.9.0" />
83+
<PackageReference Include="Lombok.NET" Version="1.2.0" />
84+
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.1.0" />
85+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.1.0" />
8386
<PackageReference Include="Microsoft.Windows.Compatibility" Version="6.0.0" />
8487
<PackageReference Include="MouseKeyHook" Version="5.6.0" />
8588
<PackageReference Include="NAudio" Version="2.1.0" />

Project-Aurora/Project-Aurora/Settings/Control_Settings.xaml.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ public partial class Control_Settings
3232
{
3333
private readonly RegistryKey _runRegistryPath = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
3434
private const string StartupTaskId = "AuroraStartup";
35+
private readonly bool _componentsInitialized;
3536

3637
public Control_Settings()
3738
{
3839
InitializeComponent();
40+
_componentsInitialized = true;
3941

4042
tabMain.DataContext = Global.Configuration;
4143

@@ -202,7 +204,14 @@ private void updates_check_Click(object sender, RoutedEventArgs e)
202204
}
203205
}
204206

205-
private void LoadBrandDefault(object sender, SelectionChangedEventArgs e) => Global.kbLayout.LoadBrandDefault();
207+
private void LoadBrandDefault(object sender, SelectionChangedEventArgs e)
208+
{
209+
if (_componentsInitialized)
210+
{
211+
Global.kbLayout.LoadBrandDefault();
212+
}
213+
}
214+
206215
private async void ResetDevices(object sender, RoutedEventArgs e) => await Global.dev_manager.ResetDevices();
207216

208217
private void razer_wrapper_install_button_Click(object sender, RoutedEventArgs e)

Project-Aurora/Project-Aurora/Settings/Layers/LayerHandler.cs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Windows.Controls;
88
using FastMember;
99
using System.ComponentModel;
10+
using System.Runtime.Serialization;
1011
using System.Windows;
1112
using Windows.Foundation.Metadata;
1213
using Application = Aurora.Profiles.Application;
@@ -129,6 +130,12 @@ public void SetOverride(string propertyName, object value) {
129130
} catch (ArgumentOutOfRangeException) { }
130131
}
131132

133+
[OnDeserialized]
134+
public void OnDeserialized(StreamingContext context)
135+
{
136+
OnPropertiesChanged(this, new PropertyChangedEventArgs(""));
137+
}
138+
132139
public void OnPropertiesChanged(object sender, object args = null)
133140
{
134141
PropertyChanged?.Invoke(sender, new PropertyChangedEventArgs(""));
@@ -266,9 +273,21 @@ public float? _Opacity {
266273
private EffectLayer _previousSecondRender = EffectLayer.EmptyLayer; //Layer before previous
267274

268275
[JsonIgnore]
269-
private Lazy<EffectLayer> _effectLayer;
276+
private readonly Lazy<EffectLayer> _effectLayer;
270277

271-
protected EffectLayer EffectLayer => _effectLayer.Value;
278+
protected static PropertyChangedEventArgs ConstPropertyChangedEventArgs = new("");
279+
protected EffectLayer EffectLayer
280+
{
281+
get
282+
{
283+
if (!_effectLayer.IsValueCreated)
284+
{
285+
var _ = _effectLayer.Value;
286+
PropertiesChanged(this, ConstPropertyChangedEventArgs);
287+
}
288+
return _effectLayer.Value;
289+
}
290+
}
272291

273292
protected LayerHandler(): this("Unoptimized Layer"){}
274293

@@ -329,6 +348,12 @@ protected virtual UserControl CreateControl()
329348
{
330349
return new Control_DefaultLayer();
331350
}
351+
352+
[OnDeserialized]
353+
public void OnDeserialized(StreamingContext context)
354+
{
355+
PropertiesChanged(this, new PropertyChangedEventArgs(""));
356+
}
332357

333358
protected virtual void PropertiesChanged(object sender, PropertyChangedEventArgs args)
334359
{
@@ -337,12 +362,12 @@ protected virtual void PropertiesChanged(object sender, PropertyChangedEventArgs
337362

338363
private void PropertiesChanged(object sender, CanvasChangedArgs e)
339364
{
340-
PropertiesChanged(sender, new PropertyChangedEventArgs(""));
365+
PropertiesChanged(sender, ConstPropertyChangedEventArgs);
341366
}
342367

343368
private void PropertiesChanged(object sender, FreeFormChangedArgs e)
344369
{
345-
PropertiesChanged(sender, new PropertyChangedEventArgs(""));
370+
PropertiesChanged(sender, ConstPropertyChangedEventArgs);
346371
}
347372

348373
public virtual void Dispose()

Project-Aurora/Project-Aurora/Settings/Layers/SolidFillLayerHandler.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
using System.ComponentModel;
44
using System.Drawing;
55
using System.Windows.Controls;
6+
using Lombok.NET;
67

78
namespace Aurora.Settings.Layers
89
{
9-
public class SolidFillLayerHandlerProperties : LayerHandlerProperties<SolidFillLayerHandlerProperties>
10+
[NoArgsConstructor]
11+
public partial class SolidFillLayerHandlerProperties : LayerHandlerProperties<SolidFillLayerHandlerProperties>
1012
{
11-
public SolidFillLayerHandlerProperties() : base()
12-
{
13-
14-
}
15-
1613
public SolidFillLayerHandlerProperties(bool arg = false) : base(arg)
1714
{
1815

@@ -29,7 +26,6 @@ public override void Default()
2926
public class SolidFillLayerHandler : LayerHandler<SolidFillLayerHandlerProperties>
3027
{
3128
private readonly SolidBrush _solidBrush = new(Color.Transparent);
32-
private bool _needsUpdate = true;
3329

3430
public SolidFillLayerHandler() : base("Solid Fill Layer")
3531
{
@@ -50,7 +46,6 @@ protected override void PropertiesChanged(object sender, PropertyChangedEventArg
5046
base.PropertiesChanged(sender, args);
5147
_solidBrush.Color = Properties.PrimaryColor;
5248
EffectLayer.Fill(_solidBrush);
53-
EffectLayer.Invalidate();
5449
}
5550
}
5651
}

0 commit comments

Comments
 (0)