From 0c842d35bed1b0842560945e02adcb2299e851cc Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 21 Nov 2021 16:53:06 +0100 Subject: [PATCH] =?UTF-8?q?seems=20like=20i=20fixed=20the=20fucking=20flic?= =?UTF-8?q?ker=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/events/events.cpp | 16 +++++++--------- src/windowManager.hpp | 1 + 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index 49e14e2..814ba9d 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -1,6 +1,6 @@ #include "events.hpp" -void handle(sigval val) { +void handle() { g_pWindowManager->statusBar.draw(); // check config @@ -8,15 +8,13 @@ void handle(sigval val) { } void Events::setThread() { - sigevent eventsig; - eventsig.sigev_notify = SIGEV_THREAD; - eventsig.sigev_notify_function = handle; - eventsig.sigev_notify_attributes = NULL; - eventsig.sigev_value.sival_ptr = &timerid; - timer_create(CLOCK_REALTIME, &eventsig, &timerid); - itimerspec t = {{0, 1000 * (1000 / ConfigManager::getInt("max_fps"))}, {1, 0}}; - timer_settime(timerid, 0, &t, 0); + g_pWindowManager->barThread = new std::thread([&]() { + for (;;) { + handle(); + std::this_thread::sleep_for(std::chrono::milliseconds(1000 / ConfigManager::getInt("max_fps"))); + } + }); } void Events::eventEnter(xcb_generic_event_t* event) { diff --git a/src/windowManager.hpp b/src/windowManager.hpp index 883bba7..cdb009a 100644 --- a/src/windowManager.hpp +++ b/src/windowManager.hpp @@ -31,6 +31,7 @@ public: CWorkspace* activeWorkspace = nullptr; CStatusBar statusBar; + std::thread* barThread; CWindow* getWindowFromDrawable(xcb_drawable_t); void addWindowToVectorSafe(CWindow);