From 2e9bd86c8bfde8d55ce82f85008210b3a0a5b430 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 20 Mar 2022 19:58:12 +0100 Subject: [PATCH] fix lockup on reloading config --- src/config/ConfigManager.cpp | 8 +++++--- src/managers/ThreadManager.cpp | 10 ++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 17a3232a..b4a218f0 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -13,8 +13,8 @@ CConfigManager::CConfigManager() { configValues["general:max_fps"].intValue = 240; configValues["general:sensitivity"].floatValue = 0.25f; - configValues["general:main_mod"].strValue = "SUPER"; // exposed to the user for easier configuring - configValues["general:main_mod_internal"].intValue = g_pKeybindManager->stringToModMask("SUPER"); // actually used and automatically calculated + configValues["general:main_mod"].strValue = "SUPER"; // exposed to the user for easier configuring + configValues["general:main_mod_internal"].intValue = g_pKeybindManager->stringToModMask("SUPER"); // actually used and automatically calculated configValues["general:border_size"].intValue = 1; configValues["general:gaps_in"].intValue = 5; @@ -24,6 +24,7 @@ CConfigManager::CConfigManager() { } void CConfigManager::init() { + loadConfigLoadVars(); const char* const ENVHOME = getenv("HOME"); @@ -289,7 +290,8 @@ void CConfigManager::tick() { struct stat fileStat; int err = stat(CONFIGPATH.c_str(), &fileStat); if (err != 0) { - Debug::log(WARN, "Error at ticking config, error %i", errno); + Debug::log(WARN, "Error at ticking config at %s, error %i: %s", CONFIGPATH.c_str(), err, strerror(err)); + return; } // check if we need to reload cfg diff --git a/src/managers/ThreadManager.cpp b/src/managers/ThreadManager.cpp index 0e2e962c..6ad6339b 100644 --- a/src/managers/ThreadManager.cpp +++ b/src/managers/ThreadManager.cpp @@ -14,15 +14,21 @@ CThreadManager::~CThreadManager() { // } +int slowUpdate = 0; + void CThreadManager::handle() { g_pConfigManager->init(); while (3.1415f) { - g_pConfigManager->tick(); + slowUpdate++; + if (slowUpdate >= g_pConfigManager->getInt("general:max_fps")){ + g_pConfigManager->tick(); + slowUpdate = 0; + } HyprCtl::tickHyprCtl(); - std::this_thread::sleep_for(std::chrono::microseconds(1000000 / g_pConfigManager->getInt("max_fps"))); + std::this_thread::sleep_for(std::chrono::microseconds(1000000 / g_pConfigManager->getInt("general:max_fps"))); } } \ No newline at end of file