From 9ecc87713d5cc936c81d10230bd25bb94e42833a Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Fri, 31 May 2013 20:06:21 +0900 Subject: [PATCH] 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 1048ad10d1..860574a1c0 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 4d930dddc9..5e7bd34123 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"