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;