1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
// Copyright (c) 2018-2021 Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
//
// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
using System;
using System.IO;
using Drawing2D;
namespace Crow.VkvgBackend
{
public class Device: IDevice
{
IntPtr handle = IntPtr.Zero;
#region CTORS & DTOR
public Device (IntPtr instance, IntPtr phy, IntPtr dev, uint qFamIdx, SampleCount samples = SampleCount.Sample_1, uint qIndex = 0)
{
handle = NativeMethods.vkvg_device_create_multisample (instance, phy, dev, qFamIdx, qIndex, samples, false);
}
~Device ()
{
Dispose (false);
}
#endregion
public void AddReference () => NativeMethods.vkvg_device_reference (handle);
public uint References () => NativeMethods.vkvg_device_get_reference_count (handle);
public IntPtr Handle => handle;
#region IDevice implementation
public void GetDpy (out int hdpy, out int vdpy) => NativeMethods.vkvg_device_get_dpy (handle, out hdpy, out vdpy);
public void SetDpy (int hdpy, int vdpy) => NativeMethods.vkvg_device_set_dpy (handle, hdpy, vdpy);
#endregion
#region IDisposable implementation
public void Dispose ()
{
Dispose (true);
GC.SuppressFinalize (this);
}
protected virtual void Dispose (bool disposing)
{
if (!disposing || handle == IntPtr.Zero)
return;
NativeMethods.vkvg_device_destroy (handle);
handle = IntPtr.Zero;
}
#endregion
}
}
|