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 enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs