1
0
mirror of https://github.com/DarthAffe/CUE.NET.git synced 2025-12-12 16:58:29 +00:00

Cloned colors assigned to render-targets in the AbstractBrush to prevent reference-issues

This commit is contained in:
Darth Affe 2017-01-05 15:08:41 +01:00
parent 1298f59d5a
commit 8523a4ddb3
2 changed files with 7 additions and 2 deletions

View File

@ -85,7 +85,7 @@ namespace CUE.NET.Brushes
RenderedTargets.Clear(); RenderedTargets.Clear();
foreach (BrushRenderTarget point in renderTargets) foreach (BrushRenderTarget point in renderTargets)
RenderedTargets[point] = GetColorAtPoint(rectangle, point); RenderedTargets[point] = new CorsairColor(GetColorAtPoint(rectangle, point)); // Clone the color, we don't want to have reference issues here and brushes might return the same color multiple times!
} }
/// <summary> /// <summary>
@ -95,7 +95,7 @@ namespace CUE.NET.Brushes
{ {
List<BrushRenderTarget> renderTargets = RenderedTargets.Keys.ToList(); List<BrushRenderTarget> renderTargets = RenderedTargets.Keys.ToList();
foreach (BrushRenderTarget renderTarget in renderTargets) foreach (BrushRenderTarget renderTarget in renderTargets)
RenderedTargets[renderTarget] = FinalizeColor(RenderedTargets[renderTarget]); RenderedTargets[renderTarget] = FinalizeColor(RenderedTargets[renderTarget]); // Cloning here again shouldn't be needed since we did this above.
} }
/// <summary> /// <summary>
@ -109,6 +109,7 @@ namespace CUE.NET.Brushes
/// <summary> /// <summary>
/// Finalizes the color by appliing the overall brightness and opacity.<br/> /// Finalizes the color by appliing the overall brightness and opacity.<br/>
/// This method should always be the last call of a <see cref="GetColorAtPoint" /> implementation. /// This method should always be the last call of a <see cref="GetColorAtPoint" /> implementation.
/// If you overwrite this method please make sure that you never return the same color-object twice to prevent reference-issues!
/// </summary> /// </summary>
/// <param name="color">The color to finalize.</param> /// <param name="color">The color to finalize.</param>
/// <returns>The finalized color.</returns> /// <returns>The finalized color.</returns>

View File

@ -39,6 +39,10 @@ namespace CUE.NET.Devices.Generic
this.B = b; this.B = b;
} }
public CorsairColor(CorsairColor color)
: this(color.A, color.R, color.G, color.B)
{ }
#endregion #endregion
#region Operators #region Operators