Exemple #1
0
        public static SKData Create(IntPtr address, int length, SKDataReleaseDelegate releaseProc, object context)
        {
            var del = releaseProc != null && context != null
                                ? new SKDataReleaseDelegate((addr, _) => releaseProc(addr, context))
                                : releaseProc;
            var proxy = DelegateProxies.Create(del, DelegateProxies.SKDataReleaseDelegateProxy, out _, out var ctx);

            return(GetObject(SkiaApi.sk_data_new_with_proc((void *)address, (IntPtr)length, proxy, (void *)ctx)));
        }
Exemple #2
0
 public static SKData Create(IntPtr address, int length, SKDataReleaseDelegate releaseProc, object context)
 {
     if (releaseProc == null)
     {
         return(GetObject <SKData> (SkiaApi.sk_data_new_with_proc(address, (IntPtr)length, IntPtr.Zero, IntPtr.Zero)));
     }
     else
     {
         var ctx = new NativeDelegateContext(context, releaseProc);
         return(GetObject <SKData> (SkiaApi.sk_data_new_with_proc(address, (IntPtr)length, releaseDelegate, ctx.NativeContext)));
     }
 }
Exemple #3
0
        public void ReleaseDataWasInvoked()
        {
            bool released = false;

            var onRelease = new SKDataReleaseDelegate((addr, ctx) => {
                Marshal.FreeCoTaskMem(addr);
                released = true;
                Assert.Equal("RELEASING!", ctx);
            });

            var memory = Marshal.AllocCoTaskMem(10);

            using (var data = SKData.Create(memory, 10, onRelease, "RELEASING!")) {
                Assert.Equal(memory, data.Data);
                Assert.Equal(10, data.Size);
            }

            Assert.True(released, "The SKDataReleaseDelegate was not called.");
        }
Exemple #4
0
 public static SKData Create(IntPtr address, int length, SKDataReleaseDelegate releaseProc)
 {
     return(Create(address, length, releaseProc, null));
 }