From 2a8df5fdc300807cf3baee42fe188dbe4c169ed7 Mon Sep 17 00:00:00 2001 From: Peter Repukat Date: Sun, 29 Jan 2023 17:16:43 +0100 Subject: [PATCH] Update GlosSIWindow default refresh rate Dont just use screen rerfresh-rate anymore (as it's a waste with high refresh monitors) and scale it down a bit --- GlosSITarget/TargetWindow.cpp | 16 ++++++++++++++-- GlosSITarget/TargetWindow.h | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/GlosSITarget/TargetWindow.cpp b/GlosSITarget/TargetWindow.cpp index 71e4295..f744b43 100644 --- a/GlosSITarget/TargetWindow.cpp +++ b/GlosSITarget/TargetWindow.cpp @@ -73,7 +73,7 @@ TargetWindow::TargetWindow( } if (Settings::window.maxFps < 15 && Settings::window.maxFps > 0) { Settings::window.maxFps = 0; - setFpsLimit(screen_refresh_rate_); + setFpsLimit(TargetWindow::calcAutoRefreshRate(screen_refresh_rate_)); } else { setFpsLimit(Settings::window.maxFps); } @@ -307,6 +307,18 @@ WORD TargetWindow::GetWindowDPI(HWND hWnd) } #endif +unsigned int TargetWindow::calcAutoRefreshRate(unsigned int rate) +{ + unsigned int auto_refresh_rate = rate; + while (auto_refresh_rate > 60) { + auto_refresh_rate /= 2; + } + if (auto_refresh_rate < 30) { + auto_refresh_rate = 30; + } + return auto_refresh_rate; +} + void TargetWindow::createWindow() { toggle_window_mode_after_frame_ = false; @@ -379,7 +391,7 @@ void TargetWindow::createWindow() screen_refresh_rate_ = 60; } else { - setFpsLimit(dev_mode.dmDisplayFrequency); + setFpsLimit(TargetWindow::calcAutoRefreshRate(dev_mode.dmDisplayFrequency)); screen_refresh_rate_ = dev_mode.dmDisplayFrequency; } diff --git a/GlosSITarget/TargetWindow.h b/GlosSITarget/TargetWindow.h index cf151a6..b87f79c 100644 --- a/GlosSITarget/TargetWindow.h +++ b/GlosSITarget/TargetWindow.h @@ -79,6 +79,7 @@ class TargetWindow { std::shared_ptr overlay_; + static unsigned int calcAutoRefreshRate(unsigned int rate); void createWindow(); bool toggle_window_mode_after_frame_ = false;