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

List:       enlightenment-svn
Subject:    E CVS: libs/evas raster
From:       enlightenment-cvs () lists ! sourceforge ! net
Date:       2005-01-31 9:32:31
Message-ID: E1CvXv5-0003zG-Q1 () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]

Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/canvas


Modified Files:
	evas_object_textblock.c 


Log Message:


massive speedup in textblock... maaaaaaaaaaasive.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- evas_object_textblock.c	31 Jan 2005 04:58:41 -0000	1.11
+++ evas_object_textblock.c	31 Jan 2005 09:32:31 -0000	1.12
@@ -99,7 +99,7 @@
       unsigned char       dirty : 1;
       Evas_Coord          w, h;
    } native;
-   
+   Evas_List             *font_hold;
    void                  *engine_data;
 };
 
@@ -233,6 +233,7 @@
 		  g = (g << 4) | g;
 		  b = evas_object_textblock_hex_string_get(data[3]);
 		  b = (b << 4) | b;
+		  a = 0xff;
 	       }
 	     else if (strlen(data) == 5) /* #RGBA */
 	       {
@@ -361,6 +362,41 @@
 }
 
 static void
+evas_object_textblock_layout_fonts_hold(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_List *l;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   for (l = (Evas_Object_List *)o->layout_nodes; l; l = l->next)
+     {
+	Layout_Node *lnode;
+	
+	lnode = (Layout_Node *)l;
+	if (lnode->layout.font.font)
+	  {
+	     o->font_hold = evas_list_append(o->font_hold,
+					     lnode->layout.font.font);
+	     lnode->layout.font.font = NULL;
+	  }
+     }
+}
+
+static void
+evas_object_textblock_layout_fonts_hold_clean(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   
+   while (o->font_hold)
+     {
+	ENFN->font_free(ENDT, o->font_hold->data);
+	o->font_hold = evas_list_remove_list(o->font_hold, o->font_hold);
+     }
+}
+
+static void
 evas_object_textblock_layout_clean(Evas_Object *obj)
 {
    Evas_Object_Textblock *o;
@@ -1137,8 +1173,10 @@
 							   context);
    if (o->changed)
      {
+	evas_object_textblock_layout_fonts_hold(obj);
 	evas_object_textblock_layout_clean(obj);
 	evas_object_textblock_layout(obj);
+	evas_object_textblock_layout_fonts_hold_clean(obj);
 	o->changed = 0;
      }
 /*   
@@ -1153,6 +1191,7 @@
                                                   obj->cur.cache.geometry.w,
                                                   obj->cur.cache.geometry.h);
  */
+#if 1
    for (l = (Evas_Object_List *)o->layout_nodes; l; l = l->next)
      {
 	Layout_Node *lnode;
@@ -1199,6 +1238,7 @@
 			       lnode->text);
 	  }
      }
+#endif   
 /*   
    if (o->engine_data)
      {
@@ -1269,8 +1309,10 @@
 	updates = evas_list_append(updates, r);
 */
 	updates = evas_object_render_pre_prev_cur_add(updates, obj);
+	evas_object_textblock_layout_fonts_hold(obj);
 	evas_object_textblock_layout_clean(obj);
 	evas_object_textblock_layout(obj);
+	evas_object_textblock_layout_fonts_hold_clean(obj);
 	o->changed = 0;
      }
    done:




-------------------------------------------------------
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