diff --git a/src/Core/Silk.NET.Core/Miscellaneous/PfnVoidFunction.cs b/src/Core/Silk.NET.Core/Miscellaneous/PfnVoidFunction.cs index 1305399872..a4634db0fe 100644 --- a/src/Core/Silk.NET.Core/Miscellaneous/PfnVoidFunction.cs +++ b/src/Core/Silk.NET.Core/Miscellaneous/PfnVoidFunction.cs @@ -3,7 +3,7 @@ namespace Silk.NET.Core { - public readonly unsafe struct PfnVoidFunction + public readonly unsafe struct PfnVoidFunction : IDisposable { private readonly void* _handle; @@ -16,6 +16,7 @@ public PfnVoidFunction (Delegate func) => _handle = (delegate* unmanaged[Cdecl]) SilkMarshal.DelegateToPtr (func); + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator delegate* unmanaged[Cdecl] (PfnVoidFunction pfn) => pfn.Handle; diff --git a/src/OpenXR/Silk.NET.OpenXR/PfnDebugUtilsMessengerCallbackEXT.cs b/src/OpenXR/Silk.NET.OpenXR/PfnDebugUtilsMessengerCallbackEXT.cs index e6e521ddbb..d261b7fd05 100644 --- a/src/OpenXR/Silk.NET.OpenXR/PfnDebugUtilsMessengerCallbackEXT.cs +++ b/src/OpenXR/Silk.NET.OpenXR/PfnDebugUtilsMessengerCallbackEXT.cs @@ -4,7 +4,7 @@ namespace Silk.NET.OpenXR { - public readonly unsafe struct PfnDebugUtilsMessengerCallbackEXT + public readonly unsafe struct PfnDebugUtilsMessengerCallbackEXT : IDisposable { private readonly void* _handle; @@ -19,6 +19,7 @@ public PfnDebugUtilsMessengerCallbackEXT DebugUtilsMessengerCallbackDataEXT*, void*, Bool32> ptr ) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnDebugUtilsMessengerCallbackEXT pfn) => (nint) pfn.Handle; public PfnDebugUtilsMessengerCallbackEXT(DebugUtilsMessengerCallbackFunctionEXT func) => _handle = diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnAllocationFunction.cs b/src/Vulkan/Silk.NET.Vulkan/PfnAllocationFunction.cs index 31a614178b..3ff0f11bfb 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnAllocationFunction.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnAllocationFunction.cs @@ -3,7 +3,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnAllocationFunction + public readonly unsafe struct PfnAllocationFunction : IDisposable { private readonly void* _handle; @@ -13,6 +13,7 @@ public readonly unsafe struct PfnAllocationFunction public PfnAllocationFunction (delegate* unmanaged[Cdecl] ptr) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnAllocationFunction pfn) => (nint) pfn.Handle; public PfnAllocationFunction diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnDebugReportCallbackEXT.cs b/src/Vulkan/Silk.NET.Vulkan/PfnDebugReportCallbackEXT.cs index b67b52fa63..e8af343b1f 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnDebugReportCallbackEXT.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnDebugReportCallbackEXT.cs @@ -4,7 +4,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnDebugReportCallbackEXT + public readonly unsafe struct PfnDebugReportCallbackEXT : IDisposable { private readonly void* _handle; @@ -19,6 +19,7 @@ public PfnDebugReportCallbackEXT void*, Bool32> ptr ) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnDebugReportCallbackEXT pfn) => (nint) pfn.Handle; public PfnDebugReportCallbackEXT diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnDebugUtilsMessengerCallbackEXT.cs b/src/Vulkan/Silk.NET.Vulkan/PfnDebugUtilsMessengerCallbackEXT.cs index 3faaf5d664..ec240b3171 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnDebugUtilsMessengerCallbackEXT.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnDebugUtilsMessengerCallbackEXT.cs @@ -4,7 +4,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnDebugUtilsMessengerCallbackEXT + public readonly unsafe struct PfnDebugUtilsMessengerCallbackEXT : IDisposable { private readonly void* _handle; @@ -19,6 +19,7 @@ public PfnDebugUtilsMessengerCallbackEXT DebugUtilsMessengerCallbackDataEXT*, void*, Bool32> ptr ) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnDebugUtilsMessengerCallbackEXT pfn) => (nint) pfn.Handle; public PfnDebugUtilsMessengerCallbackEXT(DebugUtilsMessengerCallbackFunctionEXT func) => _handle = diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnDeviceMemoryReportCallbackEXT.cs b/src/Vulkan/Silk.NET.Vulkan/PfnDeviceMemoryReportCallbackEXT.cs index e8bc0c9624..865b0d4268 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnDeviceMemoryReportCallbackEXT.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnDeviceMemoryReportCallbackEXT.cs @@ -1,11 +1,12 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using Silk.NET.Core.Native; namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnDeviceMemoryReportCallbackEXT + public readonly unsafe struct PfnDeviceMemoryReportCallbackEXT : IDisposable { private readonly void* _handle; @@ -15,6 +16,7 @@ public readonly unsafe struct PfnDeviceMemoryReportCallbackEXT public PfnDeviceMemoryReportCallbackEXT (delegate* unmanaged[Cdecl] ptr) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnDeviceMemoryReportCallbackEXT pfn) => (nint) pfn.Handle; public PfnDeviceMemoryReportCallbackEXT diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnFreeFunction.cs b/src/Vulkan/Silk.NET.Vulkan/PfnFreeFunction.cs index ea20a26811..5d86e6e6fc 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnFreeFunction.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnFreeFunction.cs @@ -3,7 +3,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnFreeFunction + public readonly unsafe struct PfnFreeFunction : IDisposable { private readonly void* _handle; @@ -12,6 +12,7 @@ public readonly unsafe struct PfnFreeFunction public PfnFreeFunction(delegate* unmanaged[Cdecl] ptr) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnFreeFunction pfn) => (nint) pfn.Handle; public PfnFreeFunction diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnInternalAllocationNotification.cs b/src/Vulkan/Silk.NET.Vulkan/PfnInternalAllocationNotification.cs index 9658d50a48..7dc7c7899a 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnInternalAllocationNotification.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnInternalAllocationNotification.cs @@ -6,7 +6,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnInternalAllocationNotification + public readonly unsafe struct PfnInternalAllocationNotification : IDisposable { private readonly void* _handle; @@ -23,6 +23,7 @@ public PfnInternalAllocationNotification (delegate* unmanaged[Cdecl]) SilkMarshal .DelegateToPtr(func); + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator delegate* unmanaged[Cdecl](PfnInternalAllocationNotification pfn) => pfn.Handle; diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnInternalFreeNotification.cs b/src/Vulkan/Silk.NET.Vulkan/PfnInternalFreeNotification.cs index 27224c9772..fac3cd1bad 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnInternalFreeNotification.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnInternalFreeNotification.cs @@ -3,7 +3,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnInternalFreeNotification + public readonly unsafe struct PfnInternalFreeNotification : IDisposable { private readonly void* _handle; @@ -20,6 +20,7 @@ public PfnInternalFreeNotification (delegate* unmanaged[Cdecl]) SilkMarshal .DelegateToPtr(func); + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator delegate* unmanaged[Cdecl](PfnInternalFreeNotification pfn) => pfn.Handle; diff --git a/src/Vulkan/Silk.NET.Vulkan/PfnReallocationFunction.cs b/src/Vulkan/Silk.NET.Vulkan/PfnReallocationFunction.cs index 5c168a5c4c..82a546f93c 100644 --- a/src/Vulkan/Silk.NET.Vulkan/PfnReallocationFunction.cs +++ b/src/Vulkan/Silk.NET.Vulkan/PfnReallocationFunction.cs @@ -3,7 +3,7 @@ namespace Silk.NET.Vulkan { - public readonly unsafe struct PfnReallocationFunction + public readonly unsafe struct PfnReallocationFunction : IDisposable { private readonly void* _handle; @@ -13,6 +13,7 @@ public readonly unsafe struct PfnReallocationFunction public PfnReallocationFunction (delegate* unmanaged[Cdecl] ptr) => _handle = ptr; + public void Dispose() => SilkMarshal.Free((nint) _handle); public static implicit operator nint(PfnReallocationFunction pfn) => (nint) pfn.Handle; public PfnReallocationFunction