Exemple #1
0
        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 _));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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 _));
        }