aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2016-05-06 02:33:10 -0400
committerJesse Luehrs <doy@tozt.net>2016-05-06 02:33:10 -0400
commitf9d71c637256b693444d21e0ee6760b183102abc (patch)
tree6201927ac87f88112c9fb69d54c665e555afb126
parent539c5536b23f176527db587faa1f738e06d5c1d5 (diff)
downloadrunes-f9d71c637256b693444d21e0ee6760b183102abc.tar.gz
runes-f9d71c637256b693444d21e0ee6760b183102abc.zip
track dirty display separate from dirty screen
-rw-r--r--src/display.c4
-rw-r--r--src/display.h1
-rw-r--r--src/window-xlib.c8
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);
}