Don't use poll timeout for timing animation.

Receiving events breaks out of the poll and resets the time out.
Effectively, this blocks the animation when the client receives events.
As a quick fix, use timerfd for timing the animation.
diff --git a/flower.c b/flower.c
index 4654de0..46deb05 100644
--- a/flower.c
+++ b/flower.c
@@ -5,6 +5,8 @@
 #include <i915_drm.h>
 #include <sys/ioctl.h>
 #include <sys/poll.h>
+#include <sys/timerfd.h>
+#include <time.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <math.h>
@@ -151,9 +153,10 @@
 	int fd, i, ret;
 	uint32_t name, mask;
 	cairo_surface_t *s;
-	struct pollfd p[1];
-
-	srandom(time(NULL));
+	struct pollfd p[2];
+	struct timespec ts;
+	struct itimerspec its;
+	uint64_t expires;
 
 	fd = open(gem_device, O_RDWR);
 	if (fd < 0) {
@@ -171,6 +174,24 @@
 
 	surface = wl_display_create_surface(display);
 
+	p[1].fd = timerfd_create(CLOCK_MONOTONIC, 0);
+	if (p[1].fd < 0) {
+		fprintf(stderr, "could not create timerfd\n: %m");
+		return -1;
+	}
+
+	p[1].events = POLLIN;
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+	its.it_value = ts;
+	its.it_interval.tv_sec = 0;
+	its.it_interval.tv_nsec = 20 * 1000000;
+	if (timerfd_settime(p[1].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
+		fprintf(stderr, "could not set timerfd\n: %m");
+		return -1;
+	}
+
+	srandom(ts.tv_nsec);
+
 	s = draw_stuff(width, height);
 	name = name_cairo_surface(fd, s);
 
@@ -178,8 +199,9 @@
 			  cairo_image_surface_get_stride(s));
 
 	i = 0;
-	while (ret = poll(p, 1, 20), ret >= 0) {
-		if (ret == 0) {
+	while (ret = poll(p, 2, -1), ret >= 0) {
+		if (p[1].revents & POLLIN) {
+			read(p[1].fd, &expires, sizeof expires);
 			wl_surface_map(surface, 
 				       x + cos(i / 30.0) * 200,
 				       y + sin(i / 31.0) * 200,