From f9d71c637256b693444d21e0ee6760b183102abc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 6 May 2016 02:33:10 -0400 Subject: track dirty display separate from dirty screen --- src/display.c | 4 +++- src/display.h | 1 + src/window-xlib.c | 8 ++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/display.c b/src/display.c index 8cff223..02a0689 100644 --- a/src/display.c +++ b/src/display.c @@ -87,9 +87,10 @@ void runes_display_set_window_size(RunesTerm *t) void runes_display_draw_screen(RunesTerm *t) { + RunesDisplay *display = &t->display; int r, rows; - if (!t->scr.dirty) { + if (!t->scr.dirty && !display->dirty) { return; } @@ -104,6 +105,7 @@ void runes_display_draw_screen(RunesTerm *t) } t->scr.dirty = 0; + display->dirty = 0; } void runes_display_draw_cursor(RunesTerm *t, cairo_t *cr) diff --git a/src/display.h b/src/display.h index cbd65e5..c27cb0b 100644 --- a/src/display.h +++ b/src/display.h @@ -21,6 +21,7 @@ struct runes_display { char unfocused: 1; char has_selection: 1; + char dirty: 1; }; void runes_display_init(RunesTerm *t); diff --git a/src/window-xlib.c b/src/window-xlib.c index 00f4545..2bdfa41 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -522,7 +522,7 @@ static void runes_window_backend_visible_scroll(RunesTerm *t, int count) return; } - t->scr.dirty = 1; + t->display.dirty = 1; runes_window_backend_flush(t); } @@ -611,7 +611,7 @@ static void runes_window_backend_start_selection( XSetSelectionOwner(w->dpy, XA_PRIMARY, w->w, time); t->display.has_selection = (XGetSelectionOwner(w->dpy, XA_PRIMARY) == w->w); - t->scr.dirty = 1; + t->display.dirty = 1; runes_window_backend_request_flush(t); } @@ -628,7 +628,7 @@ static void runes_window_backend_update_selection( *end = runes_window_backend_get_mouse_position(t, xpixel, ypixel); if (orig_end.row != end->row || orig_end.col != end->col) { - t->scr.dirty = 1; + t->display.dirty = 1; runes_window_backend_request_flush(t); } } @@ -859,7 +859,7 @@ static void runes_window_backend_handle_selection_clear_event( UNUSED(e); t->display.has_selection = 0; - t->scr.dirty = 1; + t->display.dirty = 1; runes_window_backend_flush(t); } -- cgit v1.2.3