diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-07-05 23:05:03 +0200 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-07-05 23:05:09 +0200 |
| commit | cc98594c3aed0b542e03818371a4636f549f80e1 (patch) | |
| tree | 67740aecd3fb16ff435844d19537a7258930ddb7 /src/managers/eventLoop/EventLoopManager.hpp | |
| parent | 0502c3f62b1a562e7649ac72bd208b4a89d4f3f4 (diff) | |
pointer: update geometry after unplug events
fixes #6700
fixes #6740
Diffstat (limited to 'src/managers/eventLoop/EventLoopManager.hpp')
| -rw-r--r-- | src/managers/eventLoop/EventLoopManager.hpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/managers/eventLoop/EventLoopManager.hpp b/src/managers/eventLoop/EventLoopManager.hpp index 7a4fa19e..0b2f9578 100644 --- a/src/managers/eventLoop/EventLoopManager.hpp +++ b/src/managers/eventLoop/EventLoopManager.hpp @@ -9,10 +9,10 @@ class CEventLoopManager { public: - CEventLoopManager(); + CEventLoopManager(wl_display* display, wl_event_loop* wlEventLoop); ~CEventLoopManager(); - void enterLoop(wl_display* display, wl_event_loop* wlEventLoop); + void enterLoop(); // Note: will remove the timer if the ptr is lost. void addTimer(SP<CEventLoopTimer> timer); @@ -23,6 +23,14 @@ class CEventLoopManager { // recalculates timers void nudgeTimers(); + // schedules a function to run later, aka in a wayland idle event. + void doLater(const std::function<void()>& fn); + + struct SIdleData { + wl_event_source* eventSource = nullptr; + std::vector<std::function<void()>> fns; + }; + private: struct { wl_event_loop* loop = nullptr; @@ -34,6 +42,8 @@ class CEventLoopManager { std::vector<SP<CEventLoopTimer>> timers; int timerfd = -1; } m_sTimers; + + SIdleData m_sIdle; }; inline std::unique_ptr<CEventLoopManager> g_pEventLoopManager;
\ No newline at end of file |
