Filter effect - Split up each filter into a seperate effect

BitmapBrush - Don't attempt to render while disposed
Effects - Only display movement cursor when mousing over icon
This commit is contained in:
SpoinkyNL committed 2020-06-16 12:05:24 +02:00
1 parent 9fc6191015
commit a0a3cc865e
16 files changed
+329 -162

No files matched your search

+27 -12
View File
@@ -10,6 +10,7 @@ namespace Artemis.Core.RGB.NET
public class BitmapBrush : AbstractDecoratable<IBrushDecorator>, IBrush, IDisposable
{
private readonly PluginSetting<int> _sampleSizeSetting;
private object _disposeLock;
#region Constructors
@@ -17,6 +18,7 @@ namespace Artemis.Core.RGB.NET
{
_sampleSizeSetting = sampleSizeSetting;
Scale = scale;
_disposeLock = new object();
}
#endregion
@@ -55,20 +57,27 @@ namespace Artemis.Core.RGB.NET
/// <inheritdoc />
public virtual void PerformRender(Rectangle rectangle, IEnumerable<BrushRenderTarget> renderTargets)
{
if (RenderedRectangle != rectangle || RenderedScale != Scale)
Bitmap = null;
lock (_disposeLock)
{
// Can happen during surface change
if (IsDisposed)
return;
RenderedRectangle = rectangle;
RenderedScale = Scale;
RenderedTargets.Clear();
if (RenderedRectangle != rectangle || RenderedScale != Scale)
Bitmap = null;
if (Bitmap == null)
CreateBitmap(RenderedRectangle);
RenderedRectangle = rectangle;
RenderedScale = Scale;
RenderedTargets.Clear();
if (_sampleSizeSetting.Value == 1)
TakeCenter(renderTargets);
else
TakeSamples(renderTargets);
if (Bitmap == null)
CreateBitmap(RenderedRectangle);
if (_sampleSizeSetting.Value == 1)
TakeCenter(renderTargets);
else
TakeSamples(renderTargets);
}
}
private void TakeCenter(IEnumerable<BrushRenderTarget> renderTargets)
@@ -140,9 +149,15 @@ namespace Artemis.Core.RGB.NET
public void Dispose()
{
Bitmap?.Dispose();
lock (_disposeLock)
{
Bitmap?.Dispose();
IsDisposed = true;
}
}
public bool IsDisposed { get; set; }
#endregion
}
}