Пример #1
0
        public unsafe void ReferencesCountedCorrectly()
        {
            var colorspace = SKColorSpace.CreateRgb(
                new SKColorSpaceTransferFn {
                A = 0.1f, B = 0.2f, C = 0.3f, D = 0.4f, E = 0.5f, F = 0.6f
            },
                SKMatrix44.CreateIdentity());
            var handle = colorspace.Handle;

            Assert.Equal(1, handle.GetReferenceCount(false));

            var info = new SKImageInfo(1, 1, SKImageInfo.PlatformColorType, SKAlphaType.Premul, colorspace);

            Assert.Equal(1, handle.GetReferenceCount(false));

            var pixels = new byte[info.BytesSize];

            fixed(byte *p = pixels)
            {
                var pixmap = new SKPixmap(info, (IntPtr)p);

                Assert.Equal(2, handle.GetReferenceCount(false));

                pixmap.Dispose();
                Assert.Equal(1, handle.GetReferenceCount(false));
            }

            GC.KeepAlive(colorspace);
        }
Пример #2
0
        /// <inheritdoc />
        public void Dispose()
        {
            Surface.Dispose();
            _pixelData.Dispose();

            ReleaseUnmanagedResources();
            GC.SuppressFinalize(this);
        }