public unsafe void StreamLosesOwnershipAndCanBeDisposedButIsNotActually() { var path = Path.Combine(PathToImages, "color-wheel.png"); var stream = new SKMemoryStream(File.ReadAllBytes(path)); var handle = stream.Handle; Assert.True(stream.OwnsHandle); Assert.False(stream.IgnorePublicDispose); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out _)); var codec = SKCodec.Create(stream); Assert.False(stream.OwnsHandle); Assert.True(stream.IgnorePublicDispose); stream.Dispose(); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out var inst)); Assert.Same(stream, inst); Assert.Equal(SKCodecResult.Success, codec.GetPixels(out var pixels)); Assert.NotEmpty(pixels); codec.Dispose(); Assert.False(SKObject.GetInstance <SKMemoryStream>(handle, out _)); }
public unsafe void StreamLosesOwnershipToCodecButIsNotForgotten() { var bytes = File.ReadAllBytes(Path.Combine(PathToImages, "color-wheel.png")); var stream = new SKMemoryStream(bytes); var handle = stream.Handle; Assert.True(stream.OwnsHandle); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out _)); var codec = SKCodec.Create(stream); Assert.False(stream.OwnsHandle); stream.Dispose(); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out _)); Assert.Equal(SKCodecResult.Success, codec.GetPixels(out var pixels)); Assert.NotEmpty(pixels); }
public unsafe void StreamLosesOwnershipAndCanBeDisposedButIsNotActually() { var path = Path.Combine(PathToFonts, "Distortable.ttf"); var stream = new SKMemoryStream(File.ReadAllBytes(path)); var handle = stream.Handle; Assert.True(stream.OwnsHandle); Assert.False(stream.IgnorePublicDispose); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out _)); var typeface = SKTypeface.FromStream(stream); Assert.False(stream.OwnsHandle); Assert.True(stream.IgnorePublicDispose); stream.Dispose(); Assert.True(SKObject.GetInstance <SKMemoryStream>(handle, out var inst)); Assert.Same(stream, inst); Assert.NotEmpty(typeface.GetTableTags()); typeface.Dispose(); Assert.False(SKObject.GetInstance <SKMemoryStream>(handle, out _)); }