Add VSync setting.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user