summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-10-27 15:15:34 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-10-27 15:15:34 +0200
commit031ed91ea61ad750485c4e0e4e211097a34f80e8 (patch)
treed1b9d231aa264992ad6fbd49c4ff634a8b4667f5 /src
parentb199cfd64424343f010198a5148db71a8b76c143 (diff)
EventManager: handle forced events even when poll return -1
Diffstat (limited to 'src')
-rw-r--r--src/event_manager.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/event_manager.cc b/src/event_manager.cc
index daa363f7..12b23f7e 100644
--- a/src/event_manager.cc
+++ b/src/event_manager.cc
@@ -35,15 +35,13 @@ void EventManager::handle_next_events()
{
const int timeout_ms = 100;
int res = poll(m_events.data(), m_events.size(), timeout_ms);
- if (res >= 0)
+ for (size_t i = 0; i < m_events.size(); ++i)
{
- for (size_t i = 0; i < m_events.size(); ++i)
- {
- if (m_events[i].revents or contains(m_forced, m_events[i].fd))
- m_handlers[i](m_events[i].fd);
- }
- m_forced.clear();
+ if ((res > 0 and m_events[i].revents) or
+ contains(m_forced, m_events[i].fd))
+ m_handlers[i](m_events[i].fd);
}
+ m_forced.clear();
}
void EventManager::force_signal(int fd)