Add VSync setting.

This commit is contained in:
Paul Chote
2019-12-08 20:47:08 +00:00
committed by teinarss
parent 959c750851
commit 656a260171
9 changed files with 56 additions and 8 deletions

View File

@@ -231,6 +231,12 @@ namespace OpenRA.Platforms.Default
OpenGL.CheckGLError();
}
public void SetVSyncEnabled(bool enabled)
{
VerifyThreadAffinity();
SDL.SDL_GL_SetSwapInterval(enabled ? 1 : 0);
}
public void Dispose()
{
if (disposed)

View File

@@ -241,6 +241,8 @@ namespace OpenRA.Platforms.Default
else
context = new ThreadedGraphicsContext(new Sdl2GraphicsContext(this), batchSize);
context.SetVSyncEnabled(Game.Settings.Graphics.VSync);
SDL.SDL_SetModState(SDL.SDL_Keymod.KMOD_NONE);
input = new Sdl2Input();
}

View File

@@ -49,6 +49,7 @@ namespace OpenRA.Platforms.Default
Action<object> doDrawPrimitives;
Action<object> doEnableScissor;
Action<object> doSetBlendMode;
Action<object> doSetVSync;
public ThreadedGraphicsContext(Sdl2GraphicsContext context, int batchSize)
{
@@ -107,6 +108,7 @@ namespace OpenRA.Platforms.Default
context.EnableScissor(t.Item1, t.Item2, t.Item3, t.Item4);
};
doSetBlendMode = mode => { context.SetBlendMode((BlendMode)mode); };
doSetVSync = enabled => { context.SetVSyncEnabled((bool)enabled); };
Monitor.Pulse(syncObject);
}
@@ -445,6 +447,11 @@ namespace OpenRA.Platforms.Default
{
Post(doSetBlendMode, mode);
}
public void SetVSyncEnabled(bool enabled)
{
Post(doSetVSync, enabled);
}
}
class ThreadedFrameBuffer : IFrameBuffer