From 04d94de392b6e5ca4f82acc233df7b3f97abca36 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bruyère Date: Fri, 5 Apr 2019 14:13:20 +0200 Subject: Activable pattern wip --- vke/src/ExtensionMethods.cs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'vke/src/ExtensionMethods.cs') diff --git a/vke/src/ExtensionMethods.cs b/vke/src/ExtensionMethods.cs index 1cf01cd..620c379 100644 --- a/vke/src/ExtensionMethods.cs +++ b/vke/src/ExtensionMethods.cs @@ -62,6 +62,21 @@ namespace VKE { handles[obj].Free (); handles.Remove (obj); } - + public static IntPtr Pin (this List obj) { + if (handles.ContainsKey (obj)) + Debug.WriteLine ("Pinning already pinned object: {0}", obj); + + GCHandle hnd = GCHandle.Alloc (obj.ToArray(), GCHandleType.Pinned); + handles.Add (obj, hnd); + return hnd.AddrOfPinnedObject (); + } + //public static void Unpin (this List obj) { + // if (!handles.ContainsKey (obj)) { + // Debug.WriteLine ("Trying to unpin {0}, but object has not been pinned.", obj); + // return; + // } + // handles[obj].Free (); + // handles.Remove (obj); + //} } } -- cgit v1.3.1-4-g156e