From 75ce01b1a722b2ae39322f4a1413cb1c2d8ead16 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 21 Jul 2022 12:33:22 +0200 Subject: [PATCH] Make the thread manager into a wl event loop timer --- src/managers/ThreadManager.cpp | 39 +++++++++++++++------------------- src/managers/ThreadManager.hpp | 6 ++---- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/managers/ThreadManager.cpp b/src/managers/ThreadManager.cpp index fa3d0d4e..3ca4d550 100644 --- a/src/managers/ThreadManager.cpp +++ b/src/managers/ThreadManager.cpp @@ -1,34 +1,29 @@ #include "ThreadManager.hpp" #include "../debug/HyprCtl.hpp" - -CThreadManager::CThreadManager() { - m_tMainThread = new std::thread([&]() { - // Call the handle method. - this->handle(); - }); - - m_tMainThread->detach(); // detach and continue. -} - -CThreadManager::~CThreadManager() { - // -} +#include "../Compositor.hpp" int slowUpdate = 0; -void CThreadManager::handle() { +int handleTimer(void* data) { + const auto PTM = (CThreadManager*)data; + g_pConfigManager->tick(); + + wl_event_source_timer_update(PTM->m_esConfigTimer, 1000); + + return 0; +} + +CThreadManager::CThreadManager() { g_pConfigManager->init(); HyprCtl::startHyprCtlSocket(); - while (3.1415f) { - slowUpdate++; - if (slowUpdate >= g_pConfigManager->getInt("general:max_fps")){ - g_pConfigManager->tick(); - slowUpdate = 0; - } + m_esConfigTimer = wl_event_loop_add_timer(g_pCompositor->m_sWLEventLoop, handleTimer, this); - std::this_thread::sleep_for(std::chrono::microseconds(1000000 / g_pConfigManager->getInt("general:max_fps"))); - } + wl_event_source_timer_update(m_esConfigTimer, 1000); +} + +CThreadManager::~CThreadManager() { + // } \ No newline at end of file diff --git a/src/managers/ThreadManager.hpp b/src/managers/ThreadManager.hpp index 40ed88d6..0a716e0b 100644 --- a/src/managers/ThreadManager.hpp +++ b/src/managers/ThreadManager.hpp @@ -9,11 +9,9 @@ public: CThreadManager(); ~CThreadManager(); -private: + wl_event_source* m_esConfigTimer; - void handle(); - - std::thread* m_tMainThread; + private: }; inline std::unique_ptr g_pThreadManager; \ No newline at end of file