diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index 424d14d36..19095da07 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -106,6 +106,12 @@ Window::Window() // Make sure the screensaver doesn't activate by default. setDisplaySleepEnabled(false); + +#ifdef LOVE_WINDOWS + // Turned off by default, because it (ironically) causes stuttering issues + // on some setups. More investigation is needed before enabling it. + canUseDwmFlush = SDL_GetHintBoolean("LOVE_GRAPHICS_VSYNC_DWM", SDL_FALSE) != SDL_FALSE; +#endif } Window::~Window() @@ -1458,7 +1464,7 @@ void Window::swapBuffers() // - DWM refreshes don't always match the refresh rate of the monitor the window is in (or the requested swap // interval), so we only use it when they do match. // - The user may force GL vsync, and DwmFlush shouldn't be used together with GL vsync. - if (!settings.fullscreen && swapInterval == 1) + if (canUseDwmFlush && !settings.fullscreen && swapInterval == 1) { // Desktop composition is always enabled in Windows 8+. But DwmIsCompositionEnabled won't always return true... // (see DwmIsCompositionEnabled docs). diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index ca71bc37f..96b857357 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -162,6 +162,10 @@ private: WindowSettings settings; StrongRef icon; +#ifdef LOVE_WINDOWS + bool canUseDwmFlush = false; +#endif + bool open; bool mouseGrabbed;