[prev in list] [next in list] [prev in thread] [next in thread] 

List:       enlightenment-svn
Subject:    E CVS: proto codewarrior
From:       enlightenment-cvs () lists ! sourceforge ! net
Date:       2005-01-31 23:04:55
Message-ID: E1CvkbH-0006Z5-Pr () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic