From f0f20730067ef79dd87fd24b5a670ef3f38c0b88 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sat, 10 Apr 2021 14:53:26 +0200 Subject: Feature: allow a toggle to enable/disable vsync Vsync should be off by default, as for most players it will be better to play without vsync. Exception exist, mainly people who play in fullscreen mode. --- src/video/win32_v.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/video/win32_v.cpp') diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 426d74c0a..467478461 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -1290,7 +1290,6 @@ const char *VideoDriver_Win32OpenGL::Start(const StringList ¶m) if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 0) return "Only real blitters supported"; Dimension old_res = _cur_resolution; // Save current screen resolution in case of errors, as MakeWindow invalidates it. - this->vsync = GetDriverParamBool(param, "vsync"); LoadWGLExtensions(); @@ -1335,6 +1334,15 @@ void VideoDriver_Win32OpenGL::DestroyContext() } } +void VideoDriver_Win32OpenGL::ToggleVsync(bool vsync) +{ + if (_wglSwapIntervalEXT != nullptr) { + _wglSwapIntervalEXT(vsync); + } else if (vsync) { + DEBUG(driver, 0, "OpenGL: Vsync requested, but not supported by driver"); + } +} + const char *VideoDriver_Win32OpenGL::AllocateContext() { this->dc = GetDC(this->main_wnd); @@ -1363,12 +1371,7 @@ const char *VideoDriver_Win32OpenGL::AllocateContext() } if (!wglMakeCurrent(this->dc, rc)) return "Can't active GL context"; - /* Enable/disable Vsync if supported. */ - if (_wglSwapIntervalEXT != nullptr) { - _wglSwapIntervalEXT(this->vsync ? 1 : 0); - } else if (vsync) { - DEBUG(driver, 0, "OpenGL: Vsync requested, but not supported by driver"); - } + this->ToggleVsync(_video_vsync); this->gl_rc = rc; return OpenGLBackend::Create(&GetOGLProcAddressCallback); -- cgit v1.2.3-54-g00ecf