Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/enterminus/src/bin


Modified Files:
        ui.c 


Log Message:
scrolling is starting to work. it doesnt segv as much as before, but we're
accessing junk (bad memory) at some point. baby steps. (=

===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/ui.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ui.c        28 Jan 2005 12:59:27 -0000      1.3
+++ ui.c        31 Jan 2005 23:04:54 -0000      1.4
@@ -50,6 +50,7 @@
    Evas_Object *ob;
    Term_EGlyph *gl;
    Term_TGlyph *tgl;   
+   
    for(i = 0; i < term->tcanvas->rows; i++) {
       
       if(term->tcanvas->changed_rows[i] != 1) {
@@ -57,13 +58,15 @@
       }
       //printf("I is %d\n",i);
       //printf("Rendering c-row %d  g-row %d\n",i+ 
term->tcanvas->scroll_region_start,i);
-      ig++;
+
       for(j = 0; j < term->tcanvas->cols; j++) {
+        
         tgl = &term->tcanvas->grid[j + 
                                    (term->tcanvas->cols * 
                                     (i+ term->tcanvas->scroll_region_start)
                                     )];
-        //printf("Rendering row %d col %d\n",i+ 
term->tcanvas->scroll_region_start,j);
+        
+        //printf("Rendering row %d col %d\n",i+ 
term->tcanvas->scroll_region_start-ig,j);
         if(tgl->changed != 1) {
           continue;
         }
@@ -71,8 +74,17 @@
            printf("Got escape in term_redraw()!\n");
            continue;
         }
-        jg++; /* TODO: see if we need those extra vars or not */
-        gl = &term->grid[j + (term->tcanvas->cols * i)];
+
+        if(i + term->tcanvas->scroll_region_start < (term->tcanvas->rows - 
1)*term->tcanvas->scroll_size) {
+           gl = &term->grid[j + (term->tcanvas->cols * i)];
+        } else {
+           printf("DETECTED OVERFLOW!!! [s: %d, e: %d] [ig=%d]\n",
+                  term->tcanvas->scroll_region_start,
+                  term->tcanvas->scroll_region_end,
+                  ig
+                  );
+           gl = &term->grid[j + (term->tcanvas->cols * ig)];
+        }
 
         //printf("Current location: [%d, %d]\n",j,i);
         evas_object_text_font_set(gl->text, term->font.face, term->font.size);
@@ -121,6 +133,8 @@
         //printf("showing %c\n",tgl->c);
         tgl->changed = 0;
       }
+      if(i + term->tcanvas->scroll_region_start < (term->tcanvas->rows - 
1)*term->tcanvas->scroll_size)
+       ig++;
       term->tcanvas->changed_rows[i] = 0;
    }
 }
@@ -219,14 +233,14 @@
    Term_TGlyph *tgl;
    /* TODO: Finalize this shit before shipping code out */
    x1--;y1--;x2--;y2--;
-   printf("Clearing: %d %d, %d %d\n",x1,y1,x2,y2);
+   printf("Clearing: %d %d, %d 
%d\n",x1,y1+term->tcanvas->scroll_region_start,x2,y2+term->tcanvas->scroll_region_start);
    for(i = y1; i <= y2; i++) {      
       for(j = x1; j <= x2; j++) {
-        tgl = &term->tcanvas->grid[j + (term->tcanvas->cols * i)];
+        tgl = &term->tcanvas->grid[j + (term->tcanvas->cols * (i + 
term->tcanvas->scroll_region_start))];
         //if(tgl->c != ' ' && tgl->c != '\0') {
            tgl->c = '\0';
            tgl->changed = 1;
-           term->tcanvas->changed_rows[i] = 1;
+           term->tcanvas->changed_rows[i + term->tcanvas->scroll_region_start] 
= 1;
         //}
       }   
    }
@@ -240,9 +254,22 @@
    Term_TGlyph *gl;   
    
    printf("Scrolling\n");
-   
+         
    term->tcanvas->scroll_region_start+= rows;
-   term->tcanvas->scroll_region_end+=rows;   
+   term->tcanvas->scroll_region_end+=rows;
+   
+   /* TODO: check for boundaries */
+   /* This stops the segfault, but makes no sense at all */
+   if(term->tcanvas->cur_row >
+      (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
+      printf("Gone past scroll area max, going back to start\n");
+      term->tcanvas->scroll_region_end = rows - 1;
+      term->tcanvas->cur_row = rows - 1;      
+   }
+   if(term->tcanvas->scroll_region_start > 
+      (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
+      term->tcanvas->scroll_region_start = 0;
+   }
    
    
    /* fix this and make it set changed flags properly */




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to