*work in progress*
[winnie] / src / event.cc
1 #include <errno.h>
2 #include <unistd.h>
3 #include <sys/select.h>
4 #include "event.h"
5 #include "wm.h"
6 #include "keyboard.h"
7 #include "mouse.h"
8
9 void process_events()
10 {
11         int keyb_fd = get_keyboard_fd();
12         int mouse_fd = get_mouse_fd();
13
14         for(;;) {
15                 wm->process_windows();
16
17                 fd_set read_set;
18
19                 FD_ZERO(&read_set);
20                 FD_SET(keyb_fd, &read_set);
21                 FD_SET(mouse_fd, &read_set);
22
23                 int maxfd = keyb_fd > mouse_fd ? keyb_fd : mouse_fd;
24
25                 while(select(maxfd + 1, &read_set, 0, 0, 0) == -1 && errno == EINTR);
26
27                 if(FD_ISSET(keyb_fd, &read_set)) {
28                         process_keyboard_event();
29                 }
30                 if(FD_ISSET(mouse_fd, &read_set)) {
31                         process_mouse_event();
32                 }
33         }
34 }