From 1492da85d93e8db6a593eb1957af4e6f4247ded4 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 28 Apr 2017 11:23:32 +1000 Subject: [PATCH] Fix Convolution2DProcessor Also inlined ColorMatrix cos I spotted it and couldn't ignore. --- .../Processors/ColorMatrix/ColorMatrixProcessor.cs | 2 ++ .../Processors/Convolution/Convolution2DProcessor.cs | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs b/src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs index b38093d63..cfe50150f 100644 --- a/src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs +++ b/src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs @@ -7,6 +7,7 @@ namespace ImageSharp.Processing.Processors { using System; using System.Numerics; + using System.Runtime.CompilerServices; using System.Threading.Tasks; using ImageSharp.PixelFormats; @@ -79,6 +80,7 @@ namespace ImageSharp.Processing.Processors /// /// The . /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] private TPixel ApplyMatrix(TPixel color, Matrix4x4 matrix, bool compand) { Vector4 vector = color.ToVector4(); diff --git a/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs b/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs index ac96c40ae..e6a42cc0c 100644 --- a/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs +++ b/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs @@ -5,7 +5,6 @@ namespace ImageSharp.Processing.Processors { - using System; using System.Numerics; using System.Threading.Tasks; @@ -57,10 +56,11 @@ namespace ImageSharp.Processing.Processors int maxX = endX - 1; using (PixelAccessor targetPixels = new PixelAccessor(source.Width, source.Height)) + using (PixelAccessor sourcePixels = source.Lock()) { - using (PixelAccessor sourcePixels = source.Lock()) - { - Parallel.For( + sourcePixels.CopyTo(targetPixels); + + Parallel.For( startY, endY, this.ParallelOptions, @@ -119,7 +119,6 @@ namespace ImageSharp.Processing.Processors targetPixels[x, y] = packed; } }); - } source.SwapPixelsBuffers(targetPixels); }