summaryrefslogtreecommitdiff
path: root/src/managers/eventLoop/EventLoopManager.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/eventLoop/EventLoopManager.hpp')
-rw-r--r--src/managers/eventLoop/EventLoopManager.hpp17
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),