Consolidate redraw scheduling in window.c
diff --git a/clients/terminal.c b/clients/terminal.c
index 9718ac6..e0702e5 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -50,7 +50,6 @@
 struct terminal {
 	struct window *window;
 	struct display *display;
-	int redraw_scheduled;
 	char *data;
 	int width, height, start, row, column;
 	int fd, master;
@@ -219,15 +218,12 @@
 	window_commit(terminal->window, 0);
 }
 
-static gboolean
-idle_redraw(void *data)
+static void
+redraw_handler(struct window *window, void *data)
 {
 	struct terminal *terminal = data;
 
 	terminal_draw(terminal);
-	terminal->redraw_scheduled = 0;
-
-	return FALSE;
 }
 
 #define STATE_NORMAL 0
@@ -237,15 +233,6 @@
 terminal_data(struct terminal *terminal, const char *data, size_t length);
 
 static void
-terminal_schedule_redraw(struct terminal *terminal)
-{
-	if (!terminal->redraw_scheduled) {
-		g_idle_add(idle_redraw, terminal);
-		terminal->redraw_scheduled = 1;
-	}
-}
-
-static void
 handle_escape(struct terminal *terminal)
 {
 	char *row, *p;
@@ -396,15 +383,7 @@
 		}
 	}
 
-	terminal_schedule_redraw(terminal);
-}
-
-static void
-resize_handler(struct window *window, void *data)
-{
-	struct terminal *terminal = data;
-
-	terminal_schedule_redraw(terminal);
+	window_schedule_redraw(terminal->window);
 }
 
 static void
@@ -420,7 +399,7 @@
 			break;
 		terminal->fullscreen ^= 1;
 		window_set_fullscreen(window, terminal->fullscreen);
-		terminal_schedule_redraw(terminal);
+		window_schedule_redraw(terminal->window);
 		break;
 	default:
 		if (state && unicode)
@@ -436,7 +415,7 @@
 	struct terminal *terminal = data;
 
 	terminal->focused = (device != NULL);
-	terminal_schedule_redraw(terminal);
+	window_schedule_redraw(terminal->window);
 }
 
 static struct terminal *
@@ -459,7 +438,8 @@
 	terminal->margin = 5;
 
 	window_set_fullscreen(terminal->window, terminal->fullscreen);
-	window_set_resize_handler(terminal->window, resize_handler, terminal);
+	window_set_redraw_handler(terminal->window,
+				  redraw_handler, terminal);
 
 	window_set_key_handler(terminal->window, key_handler, terminal);
 	window_set_keyboard_focus_handler(terminal->window,
@@ -475,7 +455,6 @@
 	cairo_destroy(cr);
 	cairo_surface_destroy(surface);
 
-
 	terminal_draw(terminal);
 
 	return terminal;