raster pushed a commit to branch master.
commit 9ecc87713d5cc936c81d10230bd25bb94e42833a
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date: Fri May 31 20:06:21 2013 +0900
fix slowdown as a result of fixing text ascent/descent for fontsets from
tom.
---
src/lib/evas/common/evas_font_main.c | 12 ++++++++++++
src/lib/evas/include/evas_common.h | 5 +++++
2 files changed, 17 insertions(+)
diff --git a/src/lib/evas/common/evas_font_main.c
b/src/lib/evas/common/evas_font_main.c
index 1048ad1..860574a 100644
--- a/src/lib/evas/common/evas_font_main.c
+++ b/src/lib/evas/common/evas_font_main.c
@@ -185,11 +185,14 @@ evas_common_font_ascent_get(RGBA_Font *fn)
Eina_List *l;
RGBA_Font_Int *fi;
+ if (fn->have_ascent) return fn->ascent;
EINA_LIST_FOREACH(fn->fonts, l, fi)
{
v = evas_common_font_instance_ascent_get(fi);
if (v > max) max = v;
}
+ fn->ascent = max;
+ fn->have_ascent = 1;
return max;
}
@@ -201,11 +204,14 @@ evas_common_font_descent_get(RGBA_Font *fn)
Eina_List *l;
RGBA_Font_Int *fi;
+ if (fn->have_descent) return fn->descent;
EINA_LIST_FOREACH(fn->fonts, l, fi)
{
v = evas_common_font_instance_descent_get(fi);
if (v > max) max = v;
}
+ fn->descent = max;
+ fn->have_descent = 1;
return max;
}
@@ -217,11 +223,14 @@ evas_common_font_max_ascent_get(RGBA_Font *fn)
Eina_List *l;
RGBA_Font_Int *fi;
+ if (fn->have_max_ascent) return fn->max_ascent;
EINA_LIST_FOREACH(fn->fonts, l, fi)
{
v = evas_common_font_instance_max_ascent_get(fi);
if (v > max) max = v;
}
+ fn->max_ascent = max;
+ fn->have_max_ascent = 1;
return max;
}
@@ -233,11 +242,14 @@ evas_common_font_max_descent_get(RGBA_Font *fn)
Eina_List *l;
RGBA_Font_Int *fi;
+ if (fn->have_max_descent) return fn->max_descent;
EINA_LIST_FOREACH(fn->fonts, l, fi)
{
v = evas_common_font_instance_max_descent_get(fi);
if (v > max) max = v;
}
+ fn->max_descent = max;
+ fn->have_max_descent = 1;
return max;
}
diff --git a/src/lib/evas/include/evas_common.h
b/src/lib/evas/include/evas_common.h
index 4d930dd..5e7bd34 100644
--- a/src/lib/evas/include/evas_common.h
+++ b/src/lib/evas/include/evas_common.h
@@ -880,8 +880,13 @@ struct _RGBA_Font
Fash_Int *fash;
Font_Hint_Flags hinting;
int references;
+ short ascent, descent, max_ascent, max_descent;
LK(lock);
unsigned char sizeok : 1;
+ unsigned char have_ascent : 1;
+ unsigned char have_descent : 1;
+ unsigned char have_max_ascent : 1;
+ unsigned char have_max_descent : 1;
};
#include "../common/evas_font_ot.h"
--
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2