From 4a30e2acd9bb6d871d547f929cefce1d47c08931 Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Thu, 3 Jul 2025 21:20:46 +0200 Subject: eventloop: RAII the even source on readable fd RAII remove the event source and honor rule by 5 --- src/managers/eventLoop/EventLoopManager.hpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/managers/eventLoop/EventLoopManager.hpp') diff --git a/src/managers/eventLoop/EventLoopManager.hpp b/src/managers/eventLoop/EventLoopManager.hpp index 977d2b01..0835b242 100644 --- a/src/managers/eventLoop/EventLoopManager.hpp +++ b/src/managers/eventLoop/EventLoopManager.hpp @@ -42,6 +42,23 @@ class CEventLoopManager { wl_event_source* source; Hyprutils::OS::CFileDescriptor fd; std::function fn; + + SReadableWaiter(wl_event_source* src, Hyprutils::OS::CFileDescriptor f, std::function func) : source(src), fd(std::move(f)), fn(std::move(func)) {} + + ~SReadableWaiter() { + if (source) { + wl_event_source_remove(source); + source = nullptr; + } + } + + // copy + SReadableWaiter(const SReadableWaiter&) = delete; + SReadableWaiter& operator=(const SReadableWaiter&) = delete; + + // move + SReadableWaiter(SReadableWaiter&& other) noexcept = default; + SReadableWaiter& operator=(SReadableWaiter&& other) noexcept = default; }; // schedule function to when fd is readable (WL_EVENT_READABLE / POLLIN), -- cgit v1.2.3