[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