diff options
Diffstat (limited to 'src/managers/eventLoop/EventLoopManager.hpp')
| -rw-r--r-- | src/managers/eventLoop/EventLoopManager.hpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/managers/eventLoop/EventLoopManager.hpp b/src/managers/eventLoop/EventLoopManager.hpp index 90402de2..e1c243d3 100644 --- a/src/managers/eventLoop/EventLoopManager.hpp +++ b/src/managers/eventLoop/EventLoopManager.hpp @@ -1,9 +1,11 @@ #pragma once #include <condition_variable> +#include <map> #include <mutex> #include <thread> #include <wayland-server.h> +#include "helpers/signal/Signal.hpp" #include "EventLoopTimer.hpp" @@ -36,11 +38,18 @@ class CEventLoopManager { }; private: + // Manages the event sources after AQ pollFDs change. + void syncPollFDs(); + + struct SEventSourceData { + SP<Aquamarine::SPollFD> pollFD; + wl_event_source* eventSource = nullptr; + }; + struct { - wl_event_loop* loop = nullptr; - wl_display* display = nullptr; - wl_event_source* eventSource = nullptr; - std::vector<wl_event_source*> aqEventSources; + wl_event_loop* loop = nullptr; + wl_display* display = nullptr; + wl_event_source* eventSource = nullptr; } m_sWayland; struct { @@ -48,12 +57,16 @@ class CEventLoopManager { int timerfd = -1; } m_sTimers; - SIdleData m_sIdle; - std::vector<SP<Aquamarine::SPollFD>> aqPollFDs; + SIdleData m_sIdle; + std::map<int, SEventSourceData> aqEventSources; + + struct { + CHyprSignalListener pollFDsChanged; + } m_sListeners; - wl_event_source* m_configWatcherInotifySource = nullptr; + wl_event_source* m_configWatcherInotifySource = nullptr; friend class CSyncTimeline; }; -inline std::unique_ptr<CEventLoopManager> g_pEventLoopManager;
\ No newline at end of file +inline std::unique_ptr<CEventLoopManager> g_pEventLoopManager; |
