forked from Mirror/Ryujinx
36 lines
757 B
C#
36 lines
757 B
C#
|
using OpenTK.Graphics;
|
|||
|
using OpenTK.Platform;
|
|||
|
using System;
|
|||
|
using System.Threading;
|
|||
|
|
|||
|
namespace Ryujinx.Ui
|
|||
|
{
|
|||
|
class ScopedGlContext : IDisposable
|
|||
|
{
|
|||
|
private IGraphicsContext _graphicsContext;
|
|||
|
|
|||
|
private static readonly object _lock = new object();
|
|||
|
|
|||
|
public ScopedGlContext(IWindowInfo windowInfo, IGraphicsContext graphicsContext)
|
|||
|
{
|
|||
|
_graphicsContext = graphicsContext;
|
|||
|
|
|||
|
Monitor.Enter(_lock);
|
|||
|
|
|||
|
MakeCurrent(windowInfo);
|
|||
|
}
|
|||
|
|
|||
|
private void MakeCurrent(IWindowInfo windowInfo)
|
|||
|
{
|
|||
|
_graphicsContext.MakeCurrent(windowInfo);
|
|||
|
}
|
|||
|
|
|||
|
public void Dispose()
|
|||
|
{
|
|||
|
MakeCurrent(null);
|
|||
|
|
|||
|
Monitor.Exit(_lock);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|