summaryrefslogtreecommitdiff
path: root/src/managers/eventLoop/EventLoopManager.hpp
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2025-07-03 21:20:46 +0200
committerVaxry <43317083+vaxerski@users.noreply.github.com>2025-07-07 18:09:34 +0200
commit4a30e2acd9bb6d871d547f929cefce1d47c08931 (patch)
tree5b43474bea5f97a3852461c57521dd18a489b3f9 /src/managers/eventLoop/EventLoopManager.hpp
parentceec1943ffad717ff99cd72c60922738e318a445 (diff)
eventloop: RAII the even source on readable fd
RAII remove the event source and honor rule by 5
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),