Consolidate redraw scheduling in window.c
diff --git a/clients/image.c b/clients/image.c
index 77f5cf1..8493071 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -46,9 +46,6 @@
 	struct window *window;
 	struct display *display;
 	uint32_t key;
-
-	gboolean redraw_scheduled;
-
 	gchar *filename;
 };
 
@@ -149,8 +146,6 @@
 	cairo_t *cr;
 	cairo_surface_t *wsurface, *surface;
 
-	image->redraw_scheduled = 0;
-
 	window_draw(image->window);
 
 	window_get_child_rectangle(image->window, &rectangle);
@@ -186,31 +181,12 @@
 	cairo_surface_destroy(surface);
 }
 
-static gboolean
-image_idle_redraw(void *data)
+static void
+redraw_handler(struct window *window, void *data)
 {
 	struct image *image = data;
 
 	image_draw(image);
-
-	return FALSE;
-}
-
-static void
-image_schedule_redraw(struct image *image)
-{
-	if (!image->redraw_scheduled) {
-		image->redraw_scheduled = 1;
-		g_idle_add(image_idle_redraw, image);
-	}
-}
-
-static void
-resize_handler(struct window *window, void *data)
-{
-	struct image *image = data;
-
-	image_schedule_redraw(image);
 }
 
 static void
@@ -219,7 +195,7 @@
 {
 	struct image *image = data;
 
-	image_schedule_redraw(image);
+	window_schedule_redraw(image->window);
 }
 
 static struct image *
@@ -247,7 +223,7 @@
 	 * allocation scheme here.  Or maybe just a real toolkit. */
 	image->key = key + 100;
 
-	window_set_resize_handler(image->window, resize_handler, image);
+	window_set_redraw_handler(image->window, redraw_handler, image);
 	window_set_keyboard_focus_handler(image->window, keyboard_focus_handler, image);
 
 	image_draw(image);