aboutsummaryrefslogtreecommitdiffstats
path: root/src/display.c
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-26 01:25:00 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-26 01:25:00 -0400
commit018c7fb24681515b617e715b1664ed7d11cfde08 (patch)
tree2d643790e04d74c2e376df893fb06767574a1175 /src/display.c
parentea162fb1691c2809939bd33e940d9358bf691e95 (diff)
downloadrunes-dirty-rows.tar.gz
runes-dirty-rows.zip
implement dirty row trackingdirty-rows
not merging this to master because it actually ends up being ~5-10% slower - not entirely sure why. should look into it at some point.
Diffstat (limited to 'src/display.c')
-rw-r--r--src/display.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/display.c b/src/display.c
index 02e7d1a..232e658 100644
--- a/src/display.c
+++ b/src/display.c
@@ -95,10 +95,14 @@ void runes_display_draw_screen(RunesTerm *t)
/* XXX quite inefficient */
for (r = 0; r < t->scr.max.row; ++r) {
- int c = 0;
+ if (t->scr.rows[r].dirty) {
+ int c = 0;
- while (c < t->scr.max.col) {
- c += runes_display_draw_cell(t, r, c);
+ while (c < t->scr.max.col) {
+ c += runes_display_draw_cell(t, r, c);
+ }
+
+ t->scr.rows[r].dirty = 0;
}
}
runes_window_backend_request_flush(t);