Browse Source

Dont use using statement for encodedAlphaData.

It will now be disposed in a try / finally block.
pull/2412/head
Brian Popow 3 years ago
parent
commit
f01b696818
  1. 30
      src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs

30
src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs

@ -349,10 +349,11 @@ internal class Vp8Encoder : IDisposable
int alphaDataSize = 0; int alphaDataSize = 0;
bool alphaCompressionSucceeded = false; bool alphaCompressionSucceeded = false;
Span<byte> alphaData = Span<byte>.Empty; Span<byte> alphaData = Span<byte>.Empty;
IMemoryOwner<byte> encodedAlphaData = null;
if (hasAlpha) if (hasAlpha)
{ {
// TODO: This can potentially run in an separate task. // TODO: This can potentially run in an separate task.
using IMemoryOwner<byte> encodedAlphaData = AlphaEncoder.EncodeAlpha( encodedAlphaData = AlphaEncoder.EncodeAlpha(
image, image,
this.configuration, this.configuration,
this.memoryAllocator, this.memoryAllocator,
@ -405,16 +406,23 @@ internal class Vp8Encoder : IDisposable
ExifProfile exifProfile = this.skipMetadata ? null : metadata.ExifProfile; ExifProfile exifProfile = this.skipMetadata ? null : metadata.ExifProfile;
XmpProfile xmpProfile = this.skipMetadata ? null : metadata.XmpProfile; XmpProfile xmpProfile = this.skipMetadata ? null : metadata.XmpProfile;
this.bitWriter.WriteEncodedImageToStream( try
stream, {
exifProfile, this.bitWriter.WriteEncodedImageToStream(
xmpProfile, stream,
metadata.IccProfile, exifProfile,
(uint)width, xmpProfile,
(uint)height, metadata.IccProfile,
hasAlpha, (uint)width,
alphaData[..alphaDataSize], (uint)height,
this.alphaCompression && alphaCompressionSucceeded); hasAlpha,
alphaData[..alphaDataSize],
this.alphaCompression && alphaCompressionSucceeded);
}
finally
{
encodedAlphaData?.Dispose();
}
} }
/// <inheritdoc/> /// <inheritdoc/>

Loading…
Cancel
Save