aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Headless.SDL2/WindowBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Headless.SDL2/WindowBase.cs')
-rw-r--r--Ryujinx.Headless.SDL2/WindowBase.cs6
1 files changed, 5 insertions, 1 deletions
diff --git a/Ryujinx.Headless.SDL2/WindowBase.cs b/Ryujinx.Headless.SDL2/WindowBase.cs
index 3fbd9bc3..74eb0d31 100644
--- a/Ryujinx.Headless.SDL2/WindowBase.cs
+++ b/Ryujinx.Headless.SDL2/WindowBase.cs
@@ -43,6 +43,7 @@ namespace Ryujinx.Headless.SDL2
private GraphicsDebugLevel _glLogLevel;
private readonly Stopwatch _chrono;
private readonly long _ticksPerFrame;
+ private readonly CancellationTokenSource _gpuCancellationTokenSource;
private readonly ManualResetEvent _exitEvent;
private long _ticks;
@@ -66,6 +67,7 @@ namespace Ryujinx.Headless.SDL2
_glLogLevel = glLogLevel;
_chrono = new Stopwatch();
_ticksPerFrame = Stopwatch.Frequency / TargetFps;
+ _gpuCancellationTokenSource = new CancellationTokenSource();
_exitEvent = new ManualResetEvent(false);
_aspectRatio = aspectRatio;
_enableMouse = enableMouse;
@@ -162,7 +164,7 @@ namespace Ryujinx.Headless.SDL2
Device.Gpu.Renderer.RunLoop(() =>
{
- Device.Gpu.InitializeShaderCache();
+ Device.Gpu.InitializeShaderCache(_gpuCancellationTokenSource.Token);
Translator.IsReadyForTranslation.Set();
while (_isActive)
@@ -223,6 +225,8 @@ namespace Ryujinx.Headless.SDL2
return;
}
+ _gpuCancellationTokenSource.Cancel();
+
_isStopped = true;
_isActive = false;