diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-03-11 09:02:02 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-03-11 09:02:02 +1100 |
| commit | 4a59018dcd766b1499d53e82ba938ce39013f7af (patch) | |
| tree | 3440e440ca210fbd6eb7d56d724af4b6144ffa4a /src/event_manager.hh | |
| parent | c12d1c16b789e92da8a1f087836ac75951db0a93 (diff) | |
Do not select on non-urgent fd when handling only urgent events
This avoids 100% CPU usage when we have pending fifo input while running
a shell process, as we will not end-up busy looping in pselect but not
reading the available data due to being only processing urgent events.
Diffstat (limited to 'src/event_manager.hh')
| -rw-r--r-- | src/event_manager.hh | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/event_manager.hh b/src/event_manager.hh index 7503e64a..b7a9720f 100644 --- a/src/event_manager.hh +++ b/src/event_manager.hh @@ -34,7 +34,7 @@ class FDWatcher { public: using Callback = std::function<void (FDWatcher& watcher, FdEvents events, EventMode mode)>; - FDWatcher(int fd, FdEvents events, Callback callback); + FDWatcher(int fd, FdEvents events, EventMode mode, Callback callback); FDWatcher(const FDWatcher&) = delete; FDWatcher& operator=(const FDWatcher&) = delete; ~FDWatcher(); @@ -42,6 +42,7 @@ public: int fd() const { return m_fd; } FdEvents events() const { return m_events; } FdEvents& events() { return m_events; } + EventMode mode() const { return m_mode; } void run(FdEvents events, EventMode mode); @@ -51,6 +52,7 @@ public: private: int m_fd; FdEvents m_events; + EventMode m_mode; Callback m_callback; }; |
