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);