diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-12-04 04:13:56 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-12-04 04:13:56 +0100 |
| commit | ba592ca9099fe4e378692bd2e8c953de90a4beb5 (patch) | |
| tree | 766a1bf12e789bf37b86818584b5ed1998e01cb0 /vulkan/ExtensionMethods.cs | |
| parent | 0bbba34c81f356da8e00e04d0f61c6b9a66337c9 (diff) | |
Utf8StringPointer
Diffstat (limited to 'vulkan/ExtensionMethods.cs')
| -rw-r--r-- | vulkan/ExtensionMethods.cs | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/vulkan/ExtensionMethods.cs b/vulkan/ExtensionMethods.cs index 0b9797f..4102f07 100644 --- a/vulkan/ExtensionMethods.cs +++ b/vulkan/ExtensionMethods.cs @@ -38,18 +38,18 @@ namespace Vulkan { return handles[obj].AddrOfPinnedObject (); } - GCHandle hnd = GCHandle.Alloc (obj, GCHandleType.Pinned); - handles.Add (obj, hnd); - return hnd.AddrOfPinnedObject (); - } - public static IntPtr Pin<T> (this List<T> obj) { - if (handles.ContainsKey (obj)) - Debug.WriteLine ("Pinning already pinned object: {0}", obj); + GCHandle hnd = GCHandle.Alloc (obj, GCHandleType.Pinned); + handles.Add (obj, hnd); + return hnd.AddrOfPinnedObject (); + } + public static IntPtr Pin<T> (this List<T> 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 (); - } + GCHandle hnd = GCHandle.Alloc (obj.ToArray(), GCHandleType.Pinned); + handles.Add (obj, hnd); + return hnd.AddrOfPinnedObject (); + } public static IntPtr Pin<T> (this T[] obj) { if (handles.ContainsKey (obj)) Debug.WriteLine ("Pinning already pinned object: {0}", obj); @@ -63,9 +63,15 @@ namespace Vulkan { Debug.WriteLine ("Trying to pin already pinned object: {0}", obj); return handles[obj].AddrOfPinnedObject (); } + byte[] n = System.Text.Encoding.UTF8.GetBytes(obj +'\0'); + GCHandle hnd = GCHandle.Alloc (n, GCHandleType.Pinned); + handles.Add (obj, hnd); + return hnd.AddrOfPinnedObject (); + } + public static IntPtr PinPointer (this string obj) { byte[] n = System.Text.Encoding.UTF8.GetBytes(obj +'\0'); GCHandle hnd = GCHandle.Alloc (n, GCHandleType.Pinned); - handles.Add (obj, hnd); + handles.Add (hnd.AddrOfPinnedObject (), hnd); return hnd.AddrOfPinnedObject (); } |