Enlightenment CVS committal
Author : sebastid
Project : e17
Module : proto
Dir : e17/proto/enterminus/src/bin
Modified Files:
term.c ui.c
Log Message:
Less updating when scrolling.
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/term.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- term.c 28 Feb 2005 12:16:39 -0000 1.16
+++ term.c 2 Mar 2005 10:27:55 -0000 1.17
@@ -62,11 +62,6 @@
if (term->cur_row >= term->rows) {
term_scroll_up(term, 1);
term->cur_row = term->rows - 1;
- for (j = 0; j < term->cols; j++) {
- gl = &term->tcanvas->grid[pos][j];
- gl->c = ' ';
- gl->changed = 1;
- }
}
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/ui.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- ui.c 28 Feb 2005 12:34:32 -0000 1.26
+++ ui.c 2 Mar 2005 10:27:55 -0000 1.27
@@ -281,7 +281,8 @@
term_scroll_up(Term *term, int rows)
{
int i, j, x, y;
- Term_TGlyph *gl;
+ Term_TGlyph *tgl;
+ Term_EGlyph *gl;
if (term->scroll_in_region) {
/* TODO: implement this */
@@ -297,11 +298,13 @@
y = 0;
for (j = 0; j < term->cols; j++) {
term->tcanvas->grid[x][j] = term->tcanvas->grid[y][j];
- gl = &term->tcanvas->grid[x][j];
- gl->changed = 1;
+ tgl = &term->tcanvas->grid[x][j];
+ tgl->changed = 1;
}
}
} else {
+ void *data;
+
DPRINT((stderr, "Scrolling: window\n"));
term->tcanvas->pos += rows;
if (term->tcanvas->pos >= term->tcanvas->size) {
@@ -312,13 +315,38 @@
for (i = 0; i < term->tcanvas->pos; i++) {
term->tcanvas->changed_rows[i] = 1;
for (j = 0; j < term->cols; j++) {
- gl = &term->tcanvas->grid[i][j];
- gl->c = ' ';
- gl->changed = 1;
+ tgl = &term->tcanvas->grid[i][j];
+ tgl->c = ' ';
+ tgl->changed = 1;
}
}
}
+ /* rotate screen */
+ data = malloc(rows * term->cols * sizeof(Term_EGlyph));
+ memcpy(data, term->grid[0], rows * term->cols * sizeof(Term_EGlyph));
+ memmove(term->grid[0], term->grid[rows],
+ (term->rows - rows) * term->cols * sizeof(Term_EGlyph));
+ memcpy(term->grid[term->rows - rows], data, rows * term->cols *
sizeof(Term_EGlyph));
+ free(data);
+ /* update positions */
+ for (i = 0; i < term->rows; i++) {
+ for (j = 0; j < term->cols; j++) {
+ gl = &term->grid[i][j];
+ evas_object_move(gl->text, j * term->font.width, i *
term->font.height);
+ }
+ }
+ /* set changed flags on chars */
+ for (i = term->rows - rows, x = term->tcanvas->pos; i < term->rows; i++,
x++) {
+ if (x >= term->tcanvas->size)
+ x = 0;
+ term->tcanvas->changed_rows[x] = 1;
+ for (j = 0; j < term->cols; j++) {
+ tgl = &term->tcanvas->grid[x][j];
+ tgl->changed = 1;
+ }
+ }
+#if 0
/* set changed flags on chars */
for (i = 0, x = term->tcanvas->pos; i < term->rows; i++, x++) {
if (x >= term->tcanvas->size)
@@ -329,6 +357,7 @@
gl->changed = 1;
}
}
+#endif
}
}
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs