Replace commit/ack/frame protocol with simpler sync and frame callbacks
diff --git a/clients/flower.c b/clients/flower.c
index 54d54f2..3a06bf9 100644
--- a/clients/flower.c
+++ b/clients/flower.c
@@ -98,21 +98,22 @@
 }
 
 struct flower {
+	struct display *display;
 	struct window *window;
 	int x, y, width, height;
 	int offset;
 };
 
 static void
-handle_frame(struct window *window,
-	     uint32_t frame, uint32_t timestamp, void *data)
+frame_callback(void *data, uint32_t time)
 {
 	struct flower *flower = data;
 
 	window_move(flower->window, 
-		    flower->x + cos((flower->offset + timestamp) / 400.0) * 400 - flower->width / 2,
-		    flower->y + sin((flower->offset + timestamp) / 320.0) * 300 - flower->height / 2);
-	window_commit(flower->window, 0);
+		    flower->x + cos((flower->offset + time) / 400.0) * 400 - flower->width / 2,
+		    flower->y + sin((flower->offset + time) / 320.0) * 300 - flower->height / 2);
+	wl_display_frame_callback(display_get_display(flower->display),
+				  frame_callback, flower);
 }
 
 int main(int argc, char *argv[])
@@ -128,6 +129,7 @@
 	flower.y = 384;
 	flower.width = 200;
 	flower.height = 200;
+	flower.display = d;
 	flower.window = window_create(d, "flower", flower.x, flower.y,
 				      flower.width, flower.height);
 
@@ -145,10 +147,11 @@
 
 	draw_stuff(s, flower.width, flower.height);
 	cairo_surface_flush(s);
+	window_flush(flower.window);
 
 	window_set_user_data(flower.window, &flower);
-	window_set_frame_handler(flower.window, handle_frame);
-	window_commit(flower.window, 0);
+	wl_display_frame_callback(display_get_display(d),
+				  frame_callback, &flower);
 
 	display_run(d);