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

Reply via email to