diff options
-rw-r--r-- | src/display.c | 4 | ||||
-rw-r--r-- | src/display.h | 1 | ||||
-rw-r--r-- | 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); } |