summaryrefslogtreecommitdiff
path: root/src/managers/eventLoop/EventLoopManager.hpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-07-05 23:05:03 +0200
committerVaxry <vaxry@vaxry.net>2024-07-05 23:05:09 +0200
commitcc98594c3aed0b542e03818371a4636f549f80e1 (patch)
tree67740aecd3fb16ff435844d19537a7258930ddb7 /src/managers/eventLoop/EventLoopManager.hpp
parent0502c3f62b1a562e7649ac72bd208b4a89d4f3f4 (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.hpp14
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