diff options
Diffstat (limited to 'src/managers/eventLoop/EventLoopManager.hpp')
| -rw-r--r-- | src/managers/eventLoop/EventLoopManager.hpp | 17 |
1 files changed, 17 insertions, 0 deletions
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<void()> fn; + + SReadableWaiter(wl_event_source* src, Hyprutils::OS::CFileDescriptor f, std::function<void()> 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), |
