compositor: Move input devices to their own event loop

First step towards only handling input at repaint time.
diff --git a/src/compositor.c b/src/compositor.c
index 44faa94..62277b9 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2268,6 +2268,16 @@
 			     &compositor_interface, id, compositor);
 }
 
+static int
+weston_compositor_read_input(int fd, uint32_t mask, void *data)
+{
+	struct weston_compositor *compositor = data;
+
+	wl_event_loop_dispatch(compositor->input_loop, 0);
+
+	return 1;
+}
+
 WL_EXPORT int
 weston_compositor_init(struct weston_compositor *ec, struct wl_display *display)
 {
@@ -2337,6 +2347,15 @@
 	ec->idle_source = wl_event_loop_add_timer(loop, idle_handler, ec);
 	wl_event_source_timer_update(ec->idle_source, ec->idle_time * 1000);
 
+	ec->input_loop = wl_event_loop_create();
+
+	ec->input_loop_source =
+		wl_event_loop_add_fd(loop,
+				     wl_event_loop_get_fd(ec->input_loop),
+				     WL_EVENT_READABLE,
+				     weston_compositor_read_input, ec);
+
+
 	weston_compositor_schedule_repaint(ec);
 
 	return 0;