daily update on 20240528 by nitload youmu
This commit is contained in:
@@ -36,6 +36,7 @@ using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -46,7 +47,7 @@ namespace StgSharp.Graphics
|
||||
/// must be indexed from a <see cref="glHandleSet"/>.
|
||||
/// Direct call will cause <see langword="InvalidOperationException"/>
|
||||
/// </summary>
|
||||
public unsafe class glHandle
|
||||
public unsafe class glHandle: IDisposable
|
||||
{
|
||||
private static uint* zeroHandle = (uint*)Marshal.AllocHGlobal(Marshal.SizeOf<uint>());
|
||||
|
||||
@@ -93,6 +94,8 @@ namespace StgSharp.Graphics
|
||||
set => *valuePtr = value;
|
||||
}
|
||||
|
||||
public static glHandle ZeroHandle => FromPtr(IntPtr.Zero);
|
||||
|
||||
public static glHandle Zero => Alloc(0);
|
||||
|
||||
public static glHandle Alloc(uint value)
|
||||
@@ -113,6 +116,30 @@ namespace StgSharp.Graphics
|
||||
Marshal.FreeHGlobal((IntPtr)valuePtr);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (IsIsolated)
|
||||
{
|
||||
GCHandle.FromIntPtr((IntPtr)valuePtr).Free();
|
||||
if (disposing)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// ~glHandle()
|
||||
// {
|
||||
// Dispose(disposing: false);
|
||||
// }
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(disposing: true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe class glSHandle
|
||||
@@ -188,9 +215,9 @@ namespace StgSharp.Graphics
|
||||
|
||||
public unsafe class glArrayHandle
|
||||
{
|
||||
|
||||
internal readonly Array a;
|
||||
internal GCHandle handle;
|
||||
private bool disposedValue;
|
||||
|
||||
internal glArrayHandle(Array array)
|
||||
{
|
||||
@@ -230,7 +257,6 @@ namespace StgSharp.Graphics
|
||||
handle.Free();
|
||||
handle = default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user