2023-10-04 21:45:17 +00:00
|
|
|
using System.Collections.Concurrent;
|
2023-09-19 06:18:21 +00:00
|
|
|
|
|
|
|
namespace MoonWorks.Graphics
|
|
|
|
{
|
|
|
|
internal class FencePool
|
|
|
|
{
|
|
|
|
private GraphicsDevice GraphicsDevice;
|
2023-10-04 21:45:17 +00:00
|
|
|
private ConcurrentQueue<Fence> Fences = new ConcurrentQueue<Fence>();
|
2023-09-19 06:18:21 +00:00
|
|
|
|
|
|
|
public FencePool(GraphicsDevice graphicsDevice)
|
|
|
|
{
|
|
|
|
GraphicsDevice = graphicsDevice;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Fence Obtain()
|
|
|
|
{
|
2023-10-04 21:45:17 +00:00
|
|
|
if (Fences.TryDequeue(out var fence))
|
|
|
|
{
|
|
|
|
return fence;
|
|
|
|
}
|
|
|
|
else
|
2023-09-19 06:18:21 +00:00
|
|
|
{
|
|
|
|
return new Fence(GraphicsDevice);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Return(Fence fence)
|
|
|
|
{
|
|
|
|
Fences.Enqueue(fence);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|