From aaa2115cd6e7093543251ba5c7aad124a27d618e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 4 Nov 2024 20:16:23 +0300 Subject: [PATCH] add 'display.limit-fps-iconified' setting --- res/layouts/pages/settings_display.xml.lua | 1 + res/texts/ru_RU.txt | 1 + src/engine.cpp | 7 +++++-- src/files/settings_io.cpp | 1 + src/settings.hpp | 2 ++ 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/res/layouts/pages/settings_display.xml.lua b/res/layouts/pages/settings_display.xml.lua index a0bc9579..f8b24d0b 100644 --- a/res/layouts/pages/settings_display.xml.lua +++ b/res/layouts/pages/settings_display.xml.lua @@ -60,4 +60,5 @@ function on_open() create_checkbox("camera.shaking", "Camera Shaking") create_checkbox("camera.inertia", "Camera Inertia") create_checkbox("camera.fov-effects", "Camera FOV Effects") + create_checkbox("display.limit-fps-iconified", "Limit Background FPS") end diff --git a/res/texts/ru_RU.txt b/res/texts/ru_RU.txt index 53368e92..490ef4d7 100644 --- a/res/texts/ru_RU.txt +++ b/res/texts/ru_RU.txt @@ -76,6 +76,7 @@ settings.Regular Sounds=Обычные Звуки settings.UI Sounds=Звуки Интерфейса settings.V-Sync=Вертикальная Синхронизация settings.Key=Кнопка +settings.Limit Background FPS=Ограничить фоновую частоту кадров # Управление chunks.reload=Перезагрузить Чанки diff --git a/src/engine.cpp b/src/engine.cpp index acff9542..0cfc6733 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -185,8 +185,11 @@ void Engine::mainloop() { if (!Window::isIconified()) { renderFrame(batch); } - Window::setFramerate(Window::isIconified() ? 20 : - settings.display.framerate.get()); + Window::setFramerate( + Window::isIconified() && settings.display.limitFpsIconified.get() + ? 20 + : settings.display.framerate.get() + ); processPostRunnables(); diff --git a/src/files/settings_io.cpp b/src/files/settings_io.cpp index eb81f3db..d2a85f6a 100644 --- a/src/files/settings_io.cpp +++ b/src/files/settings_io.cpp @@ -51,6 +51,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) { builder.add("samples", &settings.display.samples); builder.add("framerate", &settings.display.framerate); builder.add("fullscreen", &settings.display.fullscreen); + builder.add("limit-fps-iconified", &settings.display.limitFpsIconified); builder.section("camera"); builder.add("sensitivity", &settings.camera.sensitivity); diff --git a/src/settings.hpp b/src/settings.hpp index 8d1abdbf..8343ee68 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -29,6 +29,8 @@ struct DisplaySettings { IntegerSetting samples {0}; /// @brief Framerate limit IntegerSetting framerate {-1, -1, 120}; + /// @brief Limit framerate when window is iconified + FlagSetting limitFpsIconified {false}; }; struct ChunksSettings {