From e787ffa518b2e20406bbe41a9a0e611fa28f87b2 Mon Sep 17 00:00:00 2001 From: Dmitry Pentin Date: Fri, 21 May 2021 20:23:10 +0300 Subject: [PATCH] Implemented dispose method according to common convention. --- src/ImageSharp/Image.cs | 6 ++++-- src/ImageSharp/ImageFrameCollection.cs | 6 ++++-- src/ImageSharp/ImageFrameCollection{TPixel}.cs | 13 ++++++++----- src/ImageSharp/Image{TPixel}.cs | 8 +++++++- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/ImageSharp/Image.cs b/src/ImageSharp/Image.cs index a3b425233b..724fa4f96b 100644 --- a/src/ImageSharp/Image.cs +++ b/src/ImageSharp/Image.cs @@ -87,7 +87,8 @@ namespace SixLabors.ImageSharp return; } - this.DisposeManaged(); + this.Dispose(true); + GC.SuppressFinalize(this); this.isDisposed = true; } @@ -150,7 +151,8 @@ namespace SixLabors.ImageSharp /// /// Internal routine for freeing managed resources called from /// - protected abstract void DisposeManaged(); + /// /// Whether to dispose of managed objects. + protected abstract void Dispose(bool disposing); /// /// Throws if the image is disposed. diff --git a/src/ImageSharp/ImageFrameCollection.cs b/src/ImageSharp/ImageFrameCollection.cs index ed36c16539..16d4285782 100644 --- a/src/ImageSharp/ImageFrameCollection.cs +++ b/src/ImageSharp/ImageFrameCollection.cs @@ -174,7 +174,8 @@ namespace SixLabors.ImageSharp return; } - this.DisposeManaged(); + this.Dispose(true); + GC.SuppressFinalize(this); this.isDisposed = true; } @@ -204,7 +205,8 @@ namespace SixLabors.ImageSharp /// /// Internal routine for freeing managed resources called from /// - protected abstract void DisposeManaged(); + /// /// /// Whether to dispose of managed objects. + protected abstract void Dispose(bool disposing); /// /// Implements . diff --git a/src/ImageSharp/ImageFrameCollection{TPixel}.cs b/src/ImageSharp/ImageFrameCollection{TPixel}.cs index 13ae092c42..da024c9176 100644 --- a/src/ImageSharp/ImageFrameCollection{TPixel}.cs +++ b/src/ImageSharp/ImageFrameCollection{TPixel}.cs @@ -396,14 +396,17 @@ namespace SixLabors.ImageSharp } /// - protected override void DisposeManaged() + protected override void Dispose(bool disposing) { - foreach (ImageFrame f in this.frames) + if (disposing) { - f.Dispose(); - } + foreach (ImageFrame f in this.frames) + { + f.Dispose(); + } - this.frames.Clear(); + this.frames.Clear(); + } } private ImageFrame CopyNonCompatibleFrame(ImageFrame source) diff --git a/src/ImageSharp/Image{TPixel}.cs b/src/ImageSharp/Image{TPixel}.cs index 9e3ad2636f..e42022729f 100644 --- a/src/ImageSharp/Image{TPixel}.cs +++ b/src/ImageSharp/Image{TPixel}.cs @@ -268,7 +268,13 @@ namespace SixLabors.ImageSharp } /// - protected override void DisposeManaged() => this.frames.Dispose(); + protected override void Dispose(bool disposing) + { + if (disposing) + { + this.frames.Dispose(); + } + } /// public override string ToString() => $"Image<{typeof(TPixel).Name}>: {this.Width}x{this.Height}";