diff options
Diffstat (limited to 'src/managers/eventLoop')
| -rw-r--r-- | src/managers/eventLoop/EventLoopManager.cpp | 7 | ||||
| -rw-r--r-- | src/managers/eventLoop/EventLoopManager.hpp | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/managers/eventLoop/EventLoopManager.cpp b/src/managers/eventLoop/EventLoopManager.cpp index 5910e71a..1193ffb8 100644 --- a/src/managers/eventLoop/EventLoopManager.cpp +++ b/src/managers/eventLoop/EventLoopManager.cpp @@ -13,6 +13,11 @@ CEventLoopManager::CEventLoopManager() { m_sTimers.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); } +CEventLoopManager::~CEventLoopManager() { + if (m_sWayland.eventSource) + wl_event_source_remove(m_sWayland.eventSource); +} + static int timerWrite(int fd, uint32_t mask, void* data) { g_pEventLoopManager->onTimerFire(); return 1; @@ -22,7 +27,7 @@ void CEventLoopManager::enterLoop(wl_display* display, wl_event_loop* wlEventLoo m_sWayland.loop = wlEventLoop; m_sWayland.display = display; - wl_event_loop_add_fd(wlEventLoop, m_sTimers.timerfd, WL_EVENT_READABLE, timerWrite, nullptr); + m_sWayland.eventSource = wl_event_loop_add_fd(wlEventLoop, m_sTimers.timerfd, WL_EVENT_READABLE, timerWrite, nullptr); wl_display_run(display); diff --git a/src/managers/eventLoop/EventLoopManager.hpp b/src/managers/eventLoop/EventLoopManager.hpp index f2ba61a4..7a4fa19e 100644 --- a/src/managers/eventLoop/EventLoopManager.hpp +++ b/src/managers/eventLoop/EventLoopManager.hpp @@ -10,6 +10,7 @@ class CEventLoopManager { public: CEventLoopManager(); + ~CEventLoopManager(); void enterLoop(wl_display* display, wl_event_loop* wlEventLoop); @@ -24,8 +25,9 @@ class CEventLoopManager { private: struct { - wl_event_loop* loop = nullptr; - wl_display* display = nullptr; + wl_event_loop* loop = nullptr; + wl_display* display = nullptr; + wl_event_source* eventSource = nullptr; } m_sWayland; struct { |
